首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Laravel中,可以在同一控制器上同时使用auth和auth:api中间件吗?

在Laravel中,可以在同一控制器上同时使用auth和auth:api中间件吗?
EN

Stack Overflow用户
提问于 2018-09-07 04:23:43
回答 2查看 552关注 0票数 0

我得到了使用Laravel Passport (支持OAUTH2 )实现移动应用程序接口的任务。我想重用我在网站上使用的相同的Controller方法(其中一些)。我尝试过这样做:

代码语言:javascript
复制
public function __construct()
{
    $this->middleware('auth');
    $this->middleware('auth:api');
}

但这不起作用(为什么?)。我只需要为api创建新的控制器吗?谢谢!

EN

回答 2

Stack Overflow用户

发布于 2018-09-07 04:30:46

在你的路由文件中,你可以通过这样做来指定多个中间件。

代码语言:javascript
复制
Route::middleware(['auth:api', 'auth'])->group(function() {
    //my routes
});

但对于您的使用,您可以只在您的api路由文件中使用auth:api,并在您的web路由文件中使用auth

此外,如果您希望在不通过路由进行分组的情况下对整个控制器进行中间件,则可以使用中间件组。

在Http Kernel.php中,向数组$middlewareGroups添加一个新索引

代码语言:javascript
复制
protected $middlewareGroups = [
    'web' => [
        \App\Http\Middleware\EncryptCookies::class,
        \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
        \Illuminate\Session\Middleware\StartSession::class,
        \Illuminate\View\Middleware\ShareErrorsFromSession::class,
        \App\Http\Middleware\VerifyCsrfToken::class,
    ],

    'api' => [
        'throttle:60,1',
        'auth:api',
    ],

    'both' => [
        'auth:api',
        'auth'
    ],
];

然后在你的控制器中,你应该能够做到:

代码语言:javascript
复制
public function __construct() {
    $this->middleware('both');
}

此外,您可以从中间件组中排除控制器中的方法。

代码语言:javascript
复制
public function __construct() {
    $this->middleware('both', ['except' => [ 'methodOne', 'methodTwo' ]]);
}
票数 0
EN

Stack Overflow用户

发布于 2018-09-07 07:45:13

如果您想让两个不同的身份验证卫士检查一个用户,您可以使用auth中间件来实现。它接受未指定数量的参数:

代码语言:javascript
复制
auth:web,api

它将检查用户的每个防护,直到返回一个,然后将其用作请求的当前防护。

你得到的是在堆栈中运行的两个不同的中间件。由于它们中只有一个会真正通过,因此您的设置始终是“未验证”的。(除非您有一个会话,并且出于某种奇怪的原因传递一个令牌)。

SO - Laravel two diffrent middleware authentication from auth middleware only

SO - Laravel multi auth protecting route multple middleware not working

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52211660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档