Как хранить токен JWT в базе данных

Я знаю, я потеряю цель, если я буду хранить jwt токен в моей базе данных, но по какой-то причине я хочу сохранить его, как я могу это сделать?

контроллер

<?php

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Tymon\JWTAuth\JWTAuth;

class AuthController extends Controller
{
/**
 * @var \Tymon\JWTAuth\JWTAuth
 */
protected $jwt;

public function __construct(JWTAuth $jwt)
{
    $this->jwt = $jwt;
}

public function postLogin(Request $request)
{
    $this->validate($request, [
        'email'    => 'required|email|max:255',
        'password' => 'required',
    ]);

    try {

        if (! $token = $this->jwt->attempt($request->only('email', 'password'))) {
        $create_token = User::where('user_id', $login->user_id)->update(['token' => $token]);
            return response()->json(['user_not_found'], 404);
        }
        else {
        $create_token = User::where('user_id', auth()->user()->user_id)->update(['token' => $token]);
        }

    } catch (\Tymon\JWTAuth\Exceptions\TokenExpiredException $e) {

        return response()->json(['token_expired'], 500);

    } catch (\Tymon\JWTAuth\Exceptions\TokenInvalidException $e) {

        return response()->json(['token_invalid'], 500);

    } catch (\Tymon\JWTAuth\Exceptions\JWTException $e) {

        return response()->json(['token_absent' => $e->getMessage()], 500);

    }

    return response()->json(compact('token'));
}

    public function logout(Request $request) 
{
    $this->jwt->invalidate($this->jwt->getToken());
    return response()->json([
        'message' => 'User logged off successfully!'
    ], 200);
}
}

Я попробовал описанный выше метод, но я получил сообщение о том, что вызов неопределенной функции App\Http\Controllers\auth() может кто-нибудь мне помочь??

1 ответ

Не рекомендуется видеть, что веб-токены JSON чувствительны ко времени, но я написал нечто подобное, но для использования Redis. Глядя на ваш код, я бы посоветовал вам создать строку для tokens и добавить его в public $hidden = ['password','token'], Когда пользователь создан, вы создаете и сохраняете токен в базе данных.

Другие вопросы по тегам