在laravel中使用我的自定义防护来验证用户的Auth中间件,但每当我使用该中间件调用路由时,我得到的错误是:
路由[登录]未定义 .
现在,我只是想确保调用中间件 . 这是我到目前为止所做的:
public function handle($request, Closure $next, $guard = null)
{
return "hi";
if (Auth::guard('api')->guest()) {
if ($request->ajax() || $request->wantsJson()) {
return response('Unauthorized.', 401);
}
return redirect()->guest('hi/login');
}
return $next($request);
}
以上是authenticate.php的句柄方法 . 这是我守卫的代码
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'access_token',
'provider' => 'users',
],
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
],
路由:这是路由组,其中我有一个实现auth中间件的子组 Route::group(['prefix' => 'app'], function() use ($router) { }
这是我在 Route::get('/subscribedcompanies','PromotionController@getFavoriteCompanies');
上测试中间件的路线
还有一件事我想添加的是我正在尝试基于数据库中的access_token进行身份验证 . 我更改了登录控制器中的身份验证和凭据功能,如下所示:
protected function credentials(Request $request)
{
return array_merge($request->header('authorization'));
}
public function authenticate(Request $request)
{
$credentials = $request->header('authorization');
if (Auth::attempt($credentials)) {
// Authentication passed...
return redirect()->intended('/');
}
}
2 回答
只需将您的登录路线命名为
login
Route::post('/login', 'LoginController@index')->name('login');
感谢帮助人员 . 我将制作一个自定义中间件进行身份验证 .