【问题标题】:Laravel JWT Auth not working properly, $token is false/trueLaravel JWT Auth 无法正常工作,$token 为 false/true
【发布时间】:2019-09-12 02:09:19
【问题描述】:

我使用 Laravel 5.7 和 "tymon/jwt-auth": "1.0.0-rc.3" 进行身份验证。注册用户后,当我尝试对他进行身份验证时,我总是得到一个布尔值:真或假,而不是令牌。 我尝试了在互联网上找到的所有“修复”,但没有任何效果。我错过了什么?

这是注册方法:

protected function create(array $data)
{

    if ($data['legitimation_id'][0] === 'E') {
        $user_type = 1;
    }
    else if ($data['legitimation_id'][0] === 'P') {
        $user_type = 2;
    }

    $data['user_type'] = $user_type;
    $data['password'] = Hash::make($data['password']);

    $user = User::create($data);
    LegitimationController::delete($data['legitimation_id']);

    return $user;
}

public function register(Request $request) {

    $data = $request->all();

    if ($this->validator($data)->fails()) {
        return $this->sendError('Validation Error.', $this->validator($data)->errors());
    }

    if (mb_substr($data['legitimation_id'], 0, 1) != 'P' && mb_substr($data['legitimation_id'], 0, 1) != 'E' ) {
        return $this->sendError('Validation Error.', array("legitimation_id" => 'Fail'));
    };

    $user = $this->create($data);

    $success = ['first_name' => $user['first_name'], 'last_name' => $user['last_name']];

    return $this->sendResponse($success, 'Succes');
}

这是登录方式:

public function login(Request $request)
{
    $credentials = $request->only('email', 'password');

    $jwt_token = null;

    if (!$jwt_token = auth('api')->attempt($credentials)) {
        $this->sendError("Unauthorized", ['error' => 'Invalid Email or Password'], 401);
    }

    $this->sendResponse(['token' => $jwt_token], "Succes");
}

api.php

Route::group([

'middleware' => 'cors',
'prefix' => 'v1'

], function () {
    Route::post('register', 'Auth\RegisterController@register');
    Route::post('login', 'Auth\LoginController@login');
});

auth.php

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

    'api' => [
        'driver' => 'jwt',
        'provider' => 'users',
    ],
],

【问题讨论】:

  • 你如何测试你的api?邮递员,失眠?您可以添加显示标头、查询、url 的 api 响应吗?
  • laravel.log有错误吗?
  • 问题是没有返回 $this->sendResponse(['token' => $jwt_token], "Succes");我修好了它。谢谢。
  • 你是如何解决这个问题的@Robet

标签: php laravel laravel-5.7


【解决方案1】:

如果您之前使用的是其他身份验证系统而不是 laravel jwt,建议您在 laravel 中更改配置文件(如 config/auth.php)后在 laravel 中运行清除缓存命令

php 工匠配置:清除

php 工匠配置:缓存

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-29
    • 2019-05-27
    • 2017-04-03
    • 2015-06-10
    • 1970-01-01
    • 2019-03-12
    • 2016-06-24
    相关资源
    最近更新 更多