如果我这样设置auth.php-->>
'defaults' => [
'guard' => 'web',
'passwords' => 'users',
],
字符串
登录维护,如果我去主页,并返回令牌只有真/假值这样的{“access_token”:true,“token_type”:“bearer”,“expires_in”:3600}
如果我设置了auth
'defaults' => [
'guard' => 'api',
'passwords' => 'users',
],
型
登录不能维持当我去主页,但令牌将返回罚款一样
{“access_token”:eY ....bla bla.....,“token_type”:“bearer”,“expires_in”:3600}
怎么解决呢?进退两难啊。
3条答案
按热度按时间epggiuax1#
编辑
config/auth.php
字符串
到
型
4xrmg8kj2#
设置应用的Laravel身份验证有几个要求。
您似乎选择了Sanctum作为您的身份验证提供程序。
编辑:我似乎忽略了一个事实,即用户使用的是Tymon/JWT-Auth而不是Passport/Sanctum。请参阅下面我的拆分答案。
根据sancutum文档,您需要将HasApiTokens特征添加到您的User模型类(您的用户模型缺少此特征)。
(For Tymon/JWT-Auth,您需要遵循他们对用户模型的documentation要求。)
此外,在您的应用程序/Http/控制器/AuthController. php中,
您的登录方法使用auth()->attempt()函数来验证用户的凭证是否与存储在数据库中的凭证一致。这个特殊的函数总是返回true/false,因此将结果存储在$token变量中并没有帮助,就像您下面所做的那样:
字符串
您需要做的是:
对于护照/圣诞老人:
检查attempt()是否成功(即,将其 Package 在if/else块中),然后自己发出访问令牌:
型
对于TYMON/JWT-授权:
Tymon/Jwt-Auth通过在成功时返回标记或在失败时返回false来改变attempt()函数的工作方式,因此,将login()代码更改为:
型
**其他用户注意:**我已经使用了sksmsWKd的自定义respondWithToken Package 函数来返回令牌,但显然,您可以根据需要只返回$token本身。
型
对于你的config/auth.php配置,将默认的保护设置为“web”是非常标准的。web保护在应用导航期间使用cookie来跟踪访问令牌。
希望以上内容对您有所帮助。
此致,
弗里茨。
xdyibdwo3#
如果你返回
true/false
,代码如下:字符串
请在terminal/cmd中输入此命令:
型