在我们的multi_user Rails 4.2应用程序中,需要在用户登录时保存用户令牌。这是我想到的一个解决方案,在User
模型中使用ruby线程添加两个方法:
class User < ActiveRecord::Base
def self.current_token=(token)
Thread.current[:current_token] = token
end
def self.current_token
Thread.current[:current_token]
end
end
当用户登录时,他/她的令牌由@user.current_token = token
分配(假设已生成令牌)。在应用的后期,可以current_token
User.current_token
我是ruby线程的新手,有几件事需要确认:
1. is token above thread safe and will never be changed (by another user, or overwritten by another user's token) during the `@user`'s session lifetime?
2. is `User.current_token` available everywhere inside the Rails app (as long as `User` is accessible)?
答案 0 :(得分:1)
User.current_token
将在应用中随处可见用户加载。我不建议使用这种方法来存储令牌。我鼓励你明确地将令牌传递给任何需要它的人。这使代码: