laravel - 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,
解决方案
按照文档安装 JWT 后,您应该使用
$token = JWTAuth::attempt($credentials)
代替$token = auth()->attempt($credentials)
推荐阅读
- c - 试图理解 C 语法
- reactjs - 为什么要创建上下文而不仅仅是导出对象?
- typescript - 如何创建一个不会丢失泛型类型参数的类型保护
- javascript - 如果 GeoJson 属性为空,如何使 Leaflet 的 onEachFeature 下的此方法产生不同的结果?
- android - Room Repository:按 ID 选择一行
- python - 如何使用带有 Dask 的正则表达式删除行?
- jwt - 在将 JWKS 与 Auth0 一起使用时,如果我使用的是 localhost,那么受众和发行者是什么?
- node.js - Parse Server 平台 Live Query 是否适合私人聊天?
- react-native - 如何使本机部分列表反应到折叠部分并跨部分拖放项目?
- python - 在 python 中解释 split('e') 中的字符串“轮陡字符串”