所以我们刚刚完成了删除设计的过程,并推出了简单的bcrypt
+ cancancan
身份验证系统。
现在我们也使用ActiveAdmin
作为我们的网络应用管理员解决方案,该解决方案与Devise
绑定。在网络应用程序的那一部分,一切都被打破了:)
我尝试了几个不同的东西,解决了添加我们自己的身份验证方法,但我找不到路由的解决方案,还有什么需要。
我们有一个AdminUser
模型应该是管理员用户。我做了“转换”它以使用普通用户使用密码的列(在我们切换到bcrypt之后),但我完全不知道如何使用ActiveAdmin。
答案 0 :(得分:3)
在config/initializers/active_admin.rb
中,您可能需要重新配置几个项目。
您可能需要定义身份验证方法:
# config/initializers/active_admin.rb
# == User Authentication
#
# Active Admin will automatically call an authentication
# method in a before filter of all controller actions to
# ensure that there is a currently logged in admin user.
#
# This setting changes the method which Active Admin calls
# within the application controller.
config.authentication_method = :authenticate_active_admin_user!
# app/controllers/application_controller.rb
def authenticat_active_admin_user!
# Something that returns true if the current user has access to active admin
end
您可能还需要设置current_user
方法:
# config/initializers/active_admin.rb
# == Current User
#
# Active Admin will associate actions with the current
# user performing them.
#
# This setting changes the method which Active Admin calls
# (within the application controller) to return the currently logged in user.
config.current_user_method = :current_user
# app/controllers/application_controller.rb
def current_user
# returns the current logged in user. Devise provides this automatically. You will need to replace that functionality.
end
以上只是Active Admin初始化程序中影响登录和身份验证的两件事。我建议通过整个过程,查看与用户身份验证和授权相关的所有其他配置。初始化程序有很好的文档记录,并且Active Admin homepage中有大量文档。您可能会发现需要替换主动管理员用于身份验证和授权的其他一些方法。
最后,确保您的CanCanCan Ability
类能够访问当前用户。如果您的控制器没有将正确的用户传递给它,那么它将阻止访问。