是否可以设置另一个表&列存储我的记忆代币?我知道框架会尝试在我的“用户”模型中自动查找remember_token
列,但我想将其与用户分开存储。有没有办法配置我的默认令牌表?谢谢
P.S - 我正在使用laravel 5
答案 0 :(得分:2)
首先,您需要创建单独的模型来存储记忆标记,并在您的用户模型上定义关系,如此
public function rememberToken() {
return $this->hasOne('RememberToken');
}
然后,您需要覆盖最初在Authenticatable
特征中定义的用户模型上的方法。覆盖getRememberToken()
和setRememberToken()
方法。您还需要覆盖getRememberTokenName()
,因为它在where
中的EloquentUserProvider::retrieveByToken()
子句中使用,请参阅EloquentUserProvider第60行。为了使其正常工作,您可能需要向用户添加全局范围模型在每个查询上加入remember_tokens
表,并从'remember_tokens.token'
方法返回getRememberTokenName()
。
三思而后行似乎比它的价值更麻烦。你为什么要分开存储你的代币?
答案 1 :(得分:1)
我相信Laravel的工作方式是在users表中使用单独的列来存储单个Remember_me令牌。根据我的理解,登出会重置此令牌,而不用将令牌存储在cookie中(如果我错了,请更正我)。 https://github.com/laravel/ideas/issues/971 如果您在个人计算机上选中“ remember_me”登录, 然后再次在手机上 也许再用其他任何设备, 那么最终使用或不使用Remember_me令牌在任何设备上注销的行为都会在数据库中重置该令牌。
如果Laravel有一个单独的表,能够记住每个设备,则可能会解决问题。