繁体   English   中英

如何注销使用自定义设计策略登录的用户

[英]How to logout user logged in with custom devise strategy

我需要使用自定义设计身份验证策略注销已登录到我的 Rails 应用程序的用户。 除了 database_authenticable 策略之外,还使用此策略。 是否需要将逻辑添加到我的身份验证用户的自定义实现中! 自定义策略中的方法? 我还需要在自定义会话控制器中实现销毁方法吗?

目前我的自定义策略可以很好地登录用户(现在是硬编码),但我无法注销用户,因为注销操作调用了我对authenticate_user 的自定义实现! 再次,他们再次登录。

在这种情况下,您可以使用skip_before_action回调,就像在所有操作之前放在代码下面的控制器一样

 skip_before_action :authenticate_user, only: [:your_logout_action]

这将跳过您的方法的身份验证,用户将不再登录。

据我所知,正确的是,让任何行动在设计中logout current_user 如果是这样的话就可以像这样实现

比方说,

class SomeController < ApplicationController
  before_action :authenticate_user!

  def some_action
    if some_logic == true #implement some_logic to return boolean(true/false)
      sign_out resource
      flash[:notice] = ''
      flash[:error] = 'You are logged out!'
      root_path
    end
  end
end

我能够解决我的问题。 问题是我的硬编码valid? 方法一直返回true。 当我添加逻辑以仅在存在电子邮件和密码参数时返回true,则自定义身份验证按预期工作。

使用户手动注销。

sign_out(current_user) if current_user.present?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM