首页 > 解决方案 > Laravel 5 登录没有数据库并给出响应 JWT

问题描述

需要帮助,如何在没有数据库的情况下登录后获取 JWT 令牌我尝试使用 tymondesigns/jwt-auth 但它给了我“调用成员函数 send() on null”错误。

这是我在 AuthController 的代码(构造和登录功能)

 public function __construct()
{
    $this->middleware('auth:api', ['except' => ['login']]);
}


public function login()
{
    $credentials = request(['email', 'password']);

    if (! $token = auth()->attempt($credentials)) {
        return response()->json(['error' => 'Unauthorized'], 401);
    }

    return $this->respondWithToken($token);
}

我正在使用自定义中间件:

namespace App\Http\Middleware;

use Closure;
use Session;
 use Illuminate\Http\Request;
class CustomMiddleware
{
protected $loginPath = 'login';

public function handle($request, Closure $next) 
{
    if (!empty(session('login')))
    {
        $logged_in = $request->session()->put('logged_in');

        if (!$logged_in) 
        {
            return redirect()->guest('login')->with('flag','1');
        }
        return $next($request);
    }
}

这是我在 api.php 的路线

 Route::group([

'middleware' => 'custom',
'prefix' => 'auth'

 ], function ($router) {

Route::post('login', 'AuthController@login');
Route::post('logout', 'AuthController@logout');
Route::post('refresh', 'AuthController@refresh');
Route::post('me', 'AuthController@me');

});

在 kernel.php 我放:

'custom' => \App\Http\Middleware\CustomMiddleware::class,

标签: laraveljwt

解决方案


按照文档安装 JWT 后,您应该使用

$token = JWTAuth::attempt($credentials)

代替$token = auth()->attempt($credentials)


推荐阅读