Laravel 9-无法使用护照产生令牌

发布于 2025-02-12 15:47:26 字数 1022 浏览 0 评论 0原文

以下是我在Laravel 9项目中的登录功能。我正在尝试通过laravel-passport创建身份验证令牌。

public function login(Request $request) {
    $user = User::where('email', $request->email)->first();
    if ($user) {
        if (Hash::check($request->password, $user->password)) {
            $token = $user->createToken('Laravel Password Grant Client')->accessToken;
            $response['token'] = $token;
            return response($response, 200);
        } else {
            $response = ["message" => "Password mismatch"];
      

      return response($response, 422);
            }
        }
}

我得到的回应是,

{
    "token": {
        "name": "Laravel Password Grant Client",
        "abilities": [
            "*"
        ],
        "tokenable_id": 1,
        "tokenable_type": "App\\Models\\User",
        "updated_at": "2022-07-04T05:58:36.000000Z",
        "created_at": "2022-07-04T05:58:36.000000Z",
        "id": 62
    }
}

我在这里没有任何令牌。 请帮助我解决这个问题。

The below is my login function in laravel 9 project. I am trying to create an authentication token through laravel-passport.

public function login(Request $request) {
    $user = User::where('email', $request->email)->first();
    if ($user) {
        if (Hash::check($request->password, $user->password)) {
            $token = $user->createToken('Laravel Password Grant Client')->accessToken;
            $response['token'] = $token;
            return response($response, 200);
        } else {
            $response = ["message" => "Password mismatch"];
      

      return response($response, 422);
            }
        }
}

The response I am getting is,

{
    "token": {
        "name": "Laravel Password Grant Client",
        "abilities": [
            "*"
        ],
        "tokenable_id": 1,
        "tokenable_type": "App\\Models\\User",
        "updated_at": "2022-07-04T05:58:36.000000Z",
        "created_at": "2022-07-04T05:58:36.000000Z",
        "id": 62
    }
}

I am not getting any token here.
Please help me out to fix this.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

少女七分熟 2025-02-19 15:47:26

AccessToken是正确的,只是不要忘记使用:

use Laravel\Passport\HasApiTokens;

而不是:

use Laravel\Sanctum\HasApiTokens;

这是正确的:$ token = $ user-> createToken('laravel密码授予客户端') - > accessToken;

accessToken is correct just don't forget use:

use Laravel\Passport\HasApiTokens;

instead of:

use Laravel\Sanctum\HasApiTokens;

This is correct: $token = $user->createToken('Laravel Password Grant Client')->accessToken;

甜心 2025-02-19 15:47:26

您是使用条件使用尝试函数的地方生成令牌的 -

        if(Auth::attempt($request->only('email','password'))){
         /** @var \App\Models\User $user **/
        $user=Auth::user();
        $success['token']=$user->createToken('MyApp')->accessToken;
        return response()->json(['success'=>'login successfully',$success]);
        }

它的工作正常工作

you are generate token using where condition use attempt function like this -

        if(Auth::attempt($request->only('email','password'))){
         /** @var \App\Models\User $user **/
        $user=Auth::user();
        $success['token']=$user->createToken('MyApp')->accessToken;
        return response()->json(['success'=>'login successfully',$success]);
        }

its working properly

淡看悲欢离合 2025-02-19 15:47:26

创建登录令牌后,您必须先登录用户。

$ data ['email'] =请求电子邮件

$数据['密码'] =请求密码

Auth::attempt($data);    
$loginUser = Auth::user();
$token = $loginUser->createToken('Laravel Password Grant Client')->accessToken;
$loginUser->accessToken = $token;

you have to log in user first after the login token is created.

$data['email'] = request email

$data['password'] = request password

Auth::attempt($data);    
$loginUser = Auth::user();
$token = $loginUser->createToken('Laravel Password Grant Client')->accessToken;
$loginUser->accessToken = $token;
执手闯天涯 2025-02-19 15:47:26

只需使用PlaintextToken而不是AccessToken

$token = $user->createToken('Laravel Password Grant Client')->plainTextToken;

它将为您提供一个字符串,您可以用作API令牌。

Just use plainTextToken instead of accessToken.

$token = $user->createToken('Laravel Password Grant Client')->plainTextToken;

It will give you a string, that you can use as API token.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文