首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用自定义设计策略注销已登录的用户

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

Stack Overflow用户
提问于 2019-06-07 11:08:00
回答 4查看 729关注 0票数 0

我需要注销一个已经使用自定义设备身份验证策略登录到我的Rails应用程序中的用户。除了database_authenticable策略之外,还可以使用此策略。有没有什么逻辑需要添加到authenticate_user的自定义实现中!自定义策略中的方法?另外,我是否需要在自定义会话控制器中实现销毁方法?

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

EN

回答 4

Stack Overflow用户

发布于 2019-06-07 13:00:36

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

代码语言:javascript
复制
 skip_before_action :authenticate_user, only: [:your_logout_action]

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

票数 0
EN

Stack Overflow用户

发布于 2019-06-07 13:23:42

就我所理解的,就是,让任何动作在logout中设计current_user。如果是这样,那么它可以像这样实现

比方说,

代码语言:javascript
复制
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
票数 0
EN

Stack Overflow用户

发布于 2019-06-10 00:55:04

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56487483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档