为了账号安全,请及时绑定邮箱和手机立即绑定

“message”: “方法 Illuminate\\Auth\\SessionGuard:

“message”: “方法 Illuminate\\Auth\\SessionGuard:

PHP
函数式编程 2023-11-05 15:24:51
我正在尝试将 JWT 添加到 .按照文档设置所有内容。https://jwt-auth.readthedocs.io/en/develop/quick-start/"tymon/jwt-auth": "^1.0"Laravel Framework 7.26.1这是我的AuthController.php<?php namespace App\Http\Controllers;        use Illuminate\Support\Facades\Auth;    use App\Http\Controllers\Controller;        class AuthController extends Controller    {        /**         * Create a new AuthController instance.         *         * @return void         */        public function __construct()        {            $this->middleware('auth:api', ['except' => ['login']]);        }            /**         * Get a JWT via given credentials.         *         * @return \Illuminate\Http\JsonResponse         */        public function login()        {                $credentials = request(['email', 'password']);                if (! $token = Auth::attempt($credentials)) {                return response()->json(['error' => 'Unauthorized'], 401);            }                return $this->respondWithToken($token);        }...这是 API.phpRoute::post('login', 'AuthController@login')->middleware('api');Route::post('logout', 'AuthController@logout');Route::post('refresh', 'AuthController@refresh');Route::post('me', 'AuthController@me');当试图从邮递员那里击中时,这就是我得到的http://127.0.0.1:8000/api/login/
查看完整描述

3 回答

?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

好。所以显然你必须在expires_in中指定守卫'expires_in' => auth('api')->factory()->getTTL() * 60


我将函数更新为respondWithTokenAuthController.php


return response()->json([

        'access_token' => $token,

        'token_type' => 'bearer',

        //'expires_in' => auth()->factory()->getTTL() * 60

        'expires_in' => auth('api')->factory()->getTTL() * 60

    ]);

它修复了它。


查看完整回答
反对 回复 2023-11-05
?
心有法竹

TA贡献1866条经验 获得超5个赞

正确,但由于您正在处理 API,因此您可以按照以下方式将默认保护从 更改为 in:webapiconfig/auth.php


'defaults' => [

        'guard' => 'api',

        'passwords' => 'users',

],

然后,您可以在不指定守卫的情况下使用 auth:'expires_in' => auth()->factory()->getTTL() * 60


您可能还需要运行以清除缓存,并且一切都应该很好。php artisan optimize


查看完整回答
反对 回复 2023-11-05
?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

如果您要为 graphql 应用程序实现此功能,请确保将其包含在config/auth.php


'defaults' => [

    'guard' => 'api',

    'passwords' => 'users',

],

'guards' => [

    'api' => [

        'driver' => 'jwt',

        'provider' => 'users',

    ],

],

也不要忘记在用户.php模型中实现implements JWTSubject


class User extends Authenticatable implements JWTSubject

{ use HasApiTokens, HasFactory, Notifiable;


 public function getJWTIdentifier () {

    return $this->getKey();

 }


 public function getJWTCustomClaims () {

    return [];

 }

}


查看完整回答
反对 回复 2023-11-05
  • 3 回答
  • 0 关注
  • 165 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信