Rails 3:如何使用Doorkeeper gem限制对添加oauth授权应用程序的web界面的访问



我有一个使用设备+看门人的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

这将允许您将用户发送到正确的错误页面

相关内容

  • 没有找到相关文章

最新更新