나는이 작업을 수행하는 방법을어떻게 관리 사용자에게 활성 관리자에 대한 액세스를 제한하는 내가 참으로 그들의 속성 <code>is_admin</code> 세트가 단지 내 사용자가 내 활성 관리자 백엔드에 액세스 할 수 있음을 원하는
?
"일반"사용자는 활성 관리자가 아닌 사이트에만 로그인 할 수 있습니다.
나는이 작업을 수행하는 방법을어떻게 관리 사용자에게 활성 관리자에 대한 액세스를 제한하는 내가 참으로 그들의 속성 <code>is_admin</code> 세트가 단지 내 사용자가 내 활성 관리자 백엔드에 액세스 할 수 있음을 원하는
?
"일반"사용자는 활성 관리자가 아닌 사이트에만 로그인 할 수 있습니다.
당신은 같은 설정을 가지고 :
config.authentication_method = :authenticate_admin_user!
당신이 방법이라는 authenticate_admin_user을 만들 그렇다면! ApplicationController에서 ActiveAdmin은 사용자가 관리 페이지로 이동할 수 있는지 여부를 확인합니다. 이처럼 :
# restrict access to admin module for non-admin users
def authenticate_admin_user!
raise SecurityError unless current_user.try(:admin?)
end
과와 ApplicationController에 그 예외의 구조 (또는 당신이 실제로 authenticate_admin_user!
방법 내부 리디렉션 할 수 있습니다)
rescue_from SecurityError do |exception|
redirect_to root_url
end
그리고 또 하나의 작은 일, 당신은 다음, admin_users이없는 경우 config/initializers/active_admin.rb
이 줄을 변경 것이 좋을 것이다 :
config.current_user_method = :current_user
그리고 유증 당신은 관리자의 기본 경로가 다른 수 있도록 할 수 있습니다/관리자가 아닌 사용자, 관리자 사용자도 사이트의 앞부분을 사용할 수 있어야하기 때문에 당신이 컨트롤러에서 내가 원하는하지 무슨
# path for redirection after user sign_in, depending on user role
def after_sign_in_path_for(user)
user.admin? ? admin_dashboard_path : root_path
end
이것은 좋은 해결책 인 것처럼 보입니다. current_user는 ApplicationController에서 사용할 수없는 것처럼 보입니다 ... 다른 곳에 넣을 수 없습니까? –
mm 컨트롤러가 실제로 가장 많이 사용되는 장소입니다. 그래서 어떤 문제가 있습니까? nil 또는 NoMethodError를 반환합니까? – alony
nil을 반환합니다. '정의되지 않은 메소드 'admin?' 무응답 : NilClass'. 나는 .admin을 정의 했습니까? 방법, 그래서 그게 아니야. ApplicationController에서 사용할 수없는 current_user의 몇 가지 사례를 발견했습니다. 거기에서 액세스하지 않아도되는 것 같습니다. –