gpt4 book ai didi

ruby-on-rails - Rails 和 Authlogic : Allow only one session per user?

转载 作者:行者123 更新时间:2023-12-02 00:36:36 26 4
gpt4 key购买 nike

有没有办法限制 Ruby on Rails 应用程序中的 session 数(我使用 Authlogic 进行身份验证)?

我想每个用户帐户只允许 1 个 session 。当同一用户登录另一台计算机时,先前的 session 应该过期/无效。

我正在考虑将 session 数据存储在数据库中,然后在创建新 session 实例时将其删除,但可能有更简单的方法? (配置选项)

最佳答案

我刚刚遇到了一个可能的解决方案,如果您重置存在 token ,您可以实现预期的行为:

class UserSession < Authlogic::Session::Base
before_create :reset_persistence_token

def reset_persistence_token
record.reset_persistence_token
end
end

通过这样做,用户登录的旧 session 将失效。

早些时候我如你所提到的那样实现了它:在用户表中添加一个 session_key 字段,并确保在登录时为用户存储当前 session_id:
class UserSession < Authlogic::Session::Base
after_save :set_session_key
def set_session_key
record.session_key = controller.session.session_id
end
end

然后在通用 Controller 中执行以下操作以在其他人使用同一帐户登录时踢出用户:
before_filter :check_for_simultaneous_login

def check_for_simultaneous_login
# Prevent simultaneous logins
if @current_user && @current_user.session_key != session[:session_id]
flash[:notice] = t('simultaneous_logins_detected')
current_user_session.destroy
redirect_to login_url
end
end

关于ruby-on-rails - Rails 和 Authlogic : Allow only one session per user?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4382472/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com