【问题标题】:Rails_Admin Sign out not Redirecting (Devise)Rails_Admin 退出不重定向(设计)
【发布时间】:2015-09-30 19:54:20
【问题描述】:

我们在我们的应用程序中使用了 Devise、Rails_Admin 和 Simple_Token_Authentication(用于 API)。

一切正常,除了退出。当我们点击退出时,会发出以下请求并退出用户。

于 2015 年 7 月 12 日 18:50:44 开始为 127.0.0.1 删除“/admins/sign_out” +0530 由 Devise::SessionsController#destroy 处理为 HTML 参数: {"authenticity_token"=>"rtSRPzpRN7cWEk8wV8q6VDAUB575ZV46JeFFlMFVOQc="} 管理员负载 (0.4ms) SELECT "admins".* FROM "admins" WHERE "admins"."id" = 1 ORDER BY "admins"."id" ASC LIMIT 1 (0.1ms) begin transaction (0.1ms) commit transaction Completed 204 否 700ms 内的内容(ActiveRecord:0.5ms)

问题是退出后页面没有重定向。

再次按下退出按钮时,请求如下:

于 2015 年 7 月 12 日 19:01:59 开始为 127.0.0.1 删除“/admins/sign_out” +0530 由 Devise::SessionsController#destroy 处理为 HTML 参数: {"authenticity_token"=>"dHuxA5hRosyquhlsRmchK3vW9bQOCM/YXYXUNMxTufc="} 过滤器链因 :verify_signed_out_user 呈现或重定向而停止 Completed 204 No Content in 1ms (ActiveRecord: 0.0ms)

这里是应用控制器(app/controllers/application_controller.rb):

class ApplicationController < ActionController::Base

  protect_from_forgery

  skip_before_filter :verify_signed_out_user

  respond_to :html, :json

  protected

  # Overwriting the sign_out redirect path method   
  def after_sign_out_path_for(resource_or_scope)        
   request.referrer   
  end 
end

这里是 app/config/initializers/rails_admin.rb 中的设计相关代码

config.authenticate_with do   
  warden.authenticate! scope: :admin   
end
config.current_user_method(&:current_admin)

请提出建议。提前致谢!

【问题讨论】:

  • 不知道这是否可行,但您可以尝试制作一个自定义的SessionsController &lt; Devise::SessionsController 继承设计控制器并将其添加到路由文件中并在那里添加skip_before_filter :verify_signed_out_user, only: :destroy
  • 嗨,深。已经试过了。。没用。
  • 在这个链接中还有一种方法可以被覆盖Devise::Controllers::Helpers#stored_location_forgithub.com/plataformatec/devise/wiki/…可能对你有帮助
  • 尝试将after_sign_out_path中的request.referrer更改为root_path
  • 嗨,Pavan,它不起作用

标签: ruby-on-rails api authentication devise rails-admin


【解决方案1】:

问题出在你的after_sign_out_path_for(resource_or_scope)

request.referrer 重定向到当前页面

相应地更改after_sign_out_path_for(resource_or_scope)。如果你想重定向root_path,那么下面的方法就可以了。

def after_sign_out_path_for(resource_or_scope)        
   root_path   
end 

【讨论】:

    猜你喜欢
    • 2016-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-19
    • 2015-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多