我有一个使用设备+看门人的Rails应用程序。我也在角色管理中使用康康舞。在我的应用程序中,我使用http://localhost:3000/oauth/applications/new
注册我的应用程序以获取客户端和秘密id。目前,任何用户都可以通过web界面注册应用程序以获取客户端和秘密id,我需要限制访问权限,以便只有管理员可以注册应用程序。
我在doorkeeper.rb
文件中看到一些代码
# If you want to restrict access to the web interface for adding oauth authorized applications, you need to declare the block below.
# admin_authenticator do
# # Put your admin authentication logic here.
# # Example implementation:
# Admin.find_by_id(session[:admin_id]) || redirect_to(new_admin_session_url)
# end
我试了如下,但不工作…
admin_authenticator do
if(current_user)
current_user.role? :admin
else
redirect_to(new_user_session_url)
end
end
Thanks in advance......
我使用的代码是
admin_authenticator do
redirect_to new_user_session_url unless current_user && current_user.admin?
end
嗯,你的逻辑是错误的。基本上,您让每个current_user都有访问权限。你真的想要这样的东西:
admin_authenticator do
if(current_user && current_user.role?(:admin))
#do nothing
else
redirect_to(new_user_session_url)
end
end
你也可以写
admin_authenticator do
if(current_user)
redirect_to(not_authorized_url) unless current_user.role?(:admin)
else
redirect_to(new_user_session_url)
end
end
这将允许您将用户发送到正确的错误页面