dtlygweb2017 2019-03-28 11:24
浏览 75

Laravel Passport Auth ::尝试false,password_verify为true

I am using passport to signup and login a user using api an guard, but while the signup process works fine I cannot login using my code. I have tested it on another VM where it works fine.

The returned JSON is

{
    "message": "Unauthorized",
    "request": {
        "username": "lloyd.thomas.admin",
        "password": "mypassowrd"
    }
}

I have used the native password_verify to test passowrd and it shows it as being valid. Authcontroller.php

public function login(Request $request) {
    $request->validate([
        'username' => 'required|string',
        'password' => 'required|string',
        'remember_me' => 'boolean'
    ]);

    $credentials = request(['username', 'password']);

    if (!Auth::attempt($credentials)){
        return response()->json([
                    'message' => 'Unauthorized',
                    'request' => request(['username', 'password']),
                        ], 401);
    }

    $user = $request->user();

    $tokenResult = $user->createToken('Personal Access Token');
    $token = $tokenResult->token;

    if ($request->remember_me){
        $token->expires_at = Carbon::now()->addWeeks(1);
    }

    $token->save();
    return response()->json([
                'access_token' => $tokenResult->accessToken,
                'token_type' => 'Bearer',
                'expires_at' => Carbon::parse(
                        $tokenResult->token->expires_at
                )->toDateTimeString()
    ]);
}

In App/Models/User

public function setPasswordAttribute($password) {
        $this->attributes['password'] = bcrypt($password);
    }

In Routes api.php

Route::group([
    'prefix' => 'auth'
], function () {
    Route::post('login', 'ApiControllers\AuthController@login');
    Route::post('signup', 'ApiControllers\AuthController@signup');

    Route::group([
      'middleware' => 'auth:api'
    ], function() {
        Route::get('logout', 'ApiControllers\AuthController@logout');
        Route::get('user', 'ApiControllers\AuthController@user');
    });
});

The username and password passes authentication when using web guard but not api

'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],

        'api' => [
            'driver' => 'passport',
            'provider' => 'users',
        ],
    ],
  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥100 任意维数的K均值聚类
    • ¥15 stamps做sbas-insar,时序沉降图怎么画
    • ¥15 unity第一人称射击小游戏,有demo,在原脚本的基础上进行修改以达到要求
    • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
    • ¥15 关于#Java#的问题,如何解决?
    • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
    • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
    • ¥15 cmd cl 0x000007b
    • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
    • ¥500 火焰左右视图、视差(基于双目相机)