Laravel JWT Auth Middleware (пользовательская таблица) всегда возвращает 401

Я успешно вошел в систему через приложение laravel, используя пользовательскую модель и поля.

Но проблема в том, как выполнить выход из системы и выполнить другие операции. Вот список маршрутов

+--------+----------+--------------+------+----------------------------------------------+-----------------+
| Domain | Method   | URI          | Name | Action                                       | Middleware      |
+--------+----------+--------------+------+----------------------------------------------+-----------------+
|        | GET|HEAD | /            |      | Closure                                      | web             |
|        | POST     | api/login    |      | App\Http\Controllers\AuthController@login    | api             |
|        | GET|HEAD | api/logout   |      | App\Http\Controllers\AuthController@logout   | api,jwt.auth    |
|        | POST     | api/me       |      | App\Http\Controllers\AuthController@me       | api,jwt.auth    |
|        | POST     | api/refresh  |      | App\Http\Controllers\AuthController@refresh  | api,jwt.refresh |
|        | POST     | api/register |      | App\Http\Controllers\AuthController@register | api             |
|        | GET|HEAD | login        |      | Closure                                      | web             |
+--------+----------+--------------+------+----------------------------------------------+-----------------+

а вот как все организовать маршрут

Route::post('register', 'AuthController@register');
Route::post('login', 'AuthController@login');

Route::middleware('jwt.auth')->group(function () {
Route::get('logout', 'AuthController@logout');
Route::post('me', 'AuthController@me');
});

Route::middleware('jwt.refresh')->group(function () {
Route::post('refresh', 'AuthController@refresh');
});

проблема с jwt.auth а также jwt.refresh, Оба вернут типичный 401. Я имею в виду ответ 401 laravel.

К вашему сведению, я не использую обычную электронную почту и пароль для аутентификации пользователя, но я использую другое имя для проверки учетных данных. Поэтому я должен создать другого поставщика услуг и переписать validateCredential, как показано ниже

/**
* Validate a user against the given credentials.
*
* @param \Illuminate\Contracts\Auth\Authenticatable $user
* @param array                                      $credentials
*
* @return bool
*/
public function validateCredentials(UserContract $user, array $credentials)
{
$plain = $credentials['password']; // will depend on the name of the input on the login form
$hashedValue = $user->getAuthPassword();

if ($this->hasher->needsRehash($hashedValue) && $hashedValue === md5($plain)) {
$user->us_password = bcrypt($plain);
$user->save();
}

return $this->hasher->check($plain, $user->getAuthPassword());
}

и сделать некоторые изменения на AuthServiceProvider

class AuthServiceProvider extends ServiceProvider
{
...

/**
* Register any authentication / authorization services.
*/
public function boot()
{
$this->registerPolicies();

$this->app['auth']->provider('custom', function ($app, array $config) {
$model = $app['config']['auth.providers.users.model'];

return new CustomUserProvider($app['hash'], $model);
});
}
}

Я начинаю подозревать, что этот пакет не совместим с Laravel 5.7. Потому что я использую самую предложенную версию ("tymon/jwt-auth": "dev-develop")

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]