【问题标题】:Clearance authentication only for admin dashboards仅适用于管理仪表板的清除身份验证
【发布时间】:2016-02-17 16:57:15
【问题描述】:

我有一个公开可用的 Rails 应用程序,但有一个只能由注册用户访问的管理仪表板。

我正在为仪表板部分使用 Thoughtbot Administrate,并且我正在尝试使用 Clearance 实现仪表板身份验证。

我的应用程序没有任何公共部分的身份验证,因此我将行 include Clearance::ControllerApplicationController 移动到 Admin::ApplicationController 并将登录/注销按钮放在我仪表板的导航栏中,但是,当我单击登录按钮,该应用程序向我显示了我的应用程序的身份验证表单,而不是仪表板部分(我可以说是因为两者使用的样式不同),所以我的问题是,有没有办法安装许可仅用于管理部分,例如仅为管理命名空间安装它?

rake routes 的间隙部分是:

         passwords  POST   /passwords(.:format)                     clearance/passwords#create
      new_password  GET    /passwords/new(.:format)                 clearance/passwords#new
           session  POST   /session(.:format)                       clearance/sessions#create
     user_password  POST   /users/:user_id/password(.:format)       clearance/passwords#create
edit_user_password  GET    /users/:user_id/password/edit(.:format)  clearance/passwords#edit
                    PATCH  /users/:user_id/password(.:format)       clearance/passwords#update
                    PUT    /users/:user_id/password(.:format)       clearance/passwords#update
             users  POST   /users(.:format)                         clearance/users#create
           sign_in  GET    /sign_in(.:format)                       clearance/sessions#new
          sign_out  DELETE /sign_out(.:format)                      clearance/sessions#destroy
           sign_up  GET    /sign_up(.:format)                       clearance/users#new

感谢您的帮助!

【问题讨论】:

  • rake routes 的输出是什么?您的登录链接在布局中是什么样的?
  • rake routes 输出很长,但是我编辑了问题以显示清除部分,至于登录链接,是这个:link_to 'Sign in', sign_in_path,因为没有admin_sign_in_path
  • 您是说您只想让登录表单使用不同的布局?
  • 嗨,Derek,抱歉回复晚了,这周很忙。现在,身份验证不起作用,所以我必须弄清楚我做错了什么,因为之前没问题。无论如何,我认为是的,使用 Administrate 用于登录表单的相同布局就可以了 :) 感谢您的耐心等待!

标签: ruby-on-rails authentication clearance


【解决方案1】:

听起来唯一的问题是 Clearance 控制器正在使用您的应用程序布局而不是您的管理布局。你可以覆盖它,它是documented in the README

Clearance::PasswordsController.layout 'my_passwords_layout'
Clearance::SessionsController.layout 'my_sessions_layout'
Clearance::UsersController.layout 'my_admin_layout'

随心所欲。如果您想影响所有许可意见,我认为您可以这样做:

Clearance::BaseController.layout 'my_admin_layout'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-20
    相关资源
    最近更新 更多