【发布时间】: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 < 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