Rails 3.1 앱에서 Devise 및 Cancan gem을 사용하고 있습니다.기기를 사용할 때 사용자 작업을 인증 해제하는 방법은 무엇인가요?
사용자에게 몇 개의 추가 열을 추가했습니다.
나는 능력을 정의 할 수 있었지만 잘 동작한다는 것을 알았지 만, Devise 나 사용자에게 접근 할 수 없어서 (예 : : 업데이트) 행동을 어떻게 인증받지 못했는지 알아 내지 못했습니다. 제어 장치?
어떻게 작동합니까?
Rails 3.1 앱에서 Devise 및 Cancan gem을 사용하고 있습니다.기기를 사용할 때 사용자 작업을 인증 해제하는 방법은 무엇인가요?
사용자에게 몇 개의 추가 열을 추가했습니다.
나는 능력을 정의 할 수 있었지만 잘 동작한다는 것을 알았지 만, Devise 나 사용자에게 접근 할 수 없어서 (예 : : 업데이트) 행동을 어떻게 인증받지 못했는지 알아 내지 못했습니다. 제어 장치?
어떻게 작동합니까?
또는, 관리자가 작성하거나 읽을 수 있지만 업데이트 할 수 있습니다 ability.rb
if user.role? :admin
can [:create, :read], [Model1, Model2]
end
if user.role? :user
can [:read], Model1, :id => user.id
end
에서 다음을 사용해보십시오. 또한 사용자가 Model1에 속해 있으면 Model1을 읽을 수 있습니다. 당신이 "copy_model"와 같은 사용자 지정 작업을 작성하는 경우, 당신은 같은 당신은 아마 제공하는 두 가지 답변의 조합을 원하는
...
can [:copy_model, :read], Model1, :id => user.id
...
이 도움이되지만 완전히 해결되지 않습니다. Thx Simon – zabumba
아, 좋아. 고안 할 기회가 없다는 것은 무엇을 의미합니까? 네가 필요로하는 것이 무엇인지 정확히 알아 내려고 노력하고 있니? S – simonmorley
Devise는 엔진이므로 authorize를 호출하려면 users_controller에 액세스 할 수 없습니다! : update, @user (예 : 편집 또는 작성). 그렇다면 나는 그 일을 할 필요조차 없다는 것을 깨닫는다. 그래서 나는 지금이 질문을 닫아야한다고 생각합니다. Thx Simon – zabumba
사용자에게 필드를 추가하십시오 (예 : :approved
). 관리자 만 액세스 할 수 있도록 설정하십시오.
ApplicationsController
에 필터를 작성하십시오. 인증을 사용하기 시작하면 모든 것을 오래 사용할 수 있기 때문에 많이 사용하게됩니다.
class RandomsController
before_filter :verify_approval, only: [:update]
빵, 수행 : 사용자가 권한을 요구하는 경우
def verify_approval
unless current_user.approved
flash[:error] = I18n.t("not_approved")
redirect_to(root_path)
end
end
는 그런 다음 필터를 사용합니다. 편집자가 아니거나 UsersController
입니다.
ability.rb을 추가 할 수 있습니다. Tsagadai는 before_filter를 사용하여 액세스를 제어하는 방법을 올바르게 보여 주며 simonmorley는 원하는 것처럼 CanCan 역할을 사용하고 있습니다. –