Jo *_*iss 6 ruby-on-rails devise
对于使用的Devise用户模型,:token_authenticatable如此
class Voter < ActiveRecord::Base
devise :token_authenticatable
end
Run Code Online (Sandbox Code Playgroud)
曾经有一个被称为的路由destroy_user_session,因此你可以通过链接来记录用户destroy_user_session_path.这似乎在最近的版本中已经改变 - 现在只:database_authenticatable为我创建一个销毁路线.
因此,对于使用令牌身份验证的用户,实施"注销"/"注销"操作以结束其会话的正确方法是什么?
默认情况下,当您通过令牌登录时,Devise会将用户存储在会话中,就像在数据库身份验证策略中一样.
您可以通过在Devise初始化程序中设置stateless_token为禁用它true:
Devise.setup do |config|
config.stateless_token = true
end
Run Code Online (Sandbox Code Playgroud)
这样,必须为每个请求提供令牌.
据我了解,令牌认证旨在与数据库身份验证一起使用.devise_for如果您的模型是,则只会添加会话路由database_authenticatable.这似乎是对Devise的一个小小的疏忽,但在我看来,访问令牌让用户在会话中对我开始没有多大意义.
无论如何,尝试手动定义到Devise会话的路由.
改编自Devise的路由助手(未经测试的代码):
as :user do # User scope
resource :session, :controller => 'devise/sessions' do
# new_user_session | GET /users/sign_in => devise/sessions#new
get :new, :path => 'sign_in', :as => "new"
# user_session | POST /users/sign_in => devise/sessions#create
post :create, :path => 'sign_in'
# destroy_user_session | GET /users/sign_out => devise/sessions#destroy
get :destroy, :path => 'sign_out', :as => "destroy"
end
end
Run Code Online (Sandbox Code Playgroud)
在任何情况下,帮助程序的文档devise_for都指定了创建哪些路由以及它们指向的路径.
| 归档时间: |
|
| 查看次数: |
5183 次 |
| 最近记录: |