Joh*_*nes 7 php laravel laravel-5.3
我尝试使用Laravel 5.3的Auth Scaffolding,包括api路由.我想为api后卫使用会话驱动程序,但显然这没有任何影响.我登录到使用有效的用户应用程序之后(所以我从获取/login到/home)我试图进入的路径/api/user,但它总是重定向我/home.该RedirectIfAuthenticated中间件将用户重定向.
以下是我尝试过的内容以及测试应用程序的快速概述:
// In "app\Http\Middleware\RedirectIfAuthenticated.php"
if (Auth::guard($guard)->check()) {
return redirect('/home');
}
Run Code Online (Sandbox Code Playgroud)
$guard为null,浏览时if为true /api/user.
// In "config\auth.php"
'api' => [
'driver' => 'session', // changed from token to session
'provider' => 'users',
],
Run Code Online (Sandbox Code Playgroud)
我改变了api后卫的司机session.
// In "app\Http\Kernel.php"
'api' => [
'throttle:60,1',
'bindings',
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Session\Middleware\StartSession::class,
],
Run Code Online (Sandbox Code Playgroud)
我添加了中间件以支持api中间件中的cookie
// In "routes\api.php"
Route::get('/user', function (Request $request) {
return $request->user();
})->middleware('auth:api');
Run Code Online (Sandbox Code Playgroud)
这是一个新的Laravel安装附带的示例.
// In "app\Providers\RouteServiceProvider.php"
Route::group([
'middleware' => 'api',
'namespace' => $this->namespace,
'prefix' => 'api',
], function ($router) {
require base_path('routes/api.php');
});
Run Code Online (Sandbox Code Playgroud)
该api中间件应用到中定义的所有路由api.php文件.
我希望能够在用户登录后不使用令牌等查询我的API.我用Laravel 5.2编写的应用程序基本上具有相同的路由,但只应用了web中间件组和auth中间件.在Laravel 5.3中,添加auth中间件会导致所描述的问题.
编辑:我的配置我尝试了以下内容:
// In "routes\web.php"
Route::get('/test', function (Request $request) {
return "test";
})->middleware(['auth']);
Run Code Online (Sandbox Code Playgroud)
这种方法非常好,但事实并非如此,尽管内部web和api后卫完全相同auth.php.
Route::get('/test', function (Request $request) {
return "test";
})->middleware(['auth:api']);
Run Code Online (Sandbox Code Playgroud)
即使我已经登录,我也遇到了同样的问题,在/home访问我的 API 路由时被重定向到。尝试更改 api 中间件的顺序并将App\Http\Kernel.php其放在bindings最后位置,以便首先执行您的自定义中间件。
| 归档时间: |
|
| 查看次数: |
7088 次 |
| 最近记录: |