多种中间件中的Laravel路线

时间:2018-09-09 11:29:55

标签: laravel laravel-passport laravel-middleware

我想在auth:api中间件中有一条相同的路由,并且也要走出它。

现在,如果我将两者都包括在内,即使用户已登录,也仅考虑auth:api中的一个。

有没有一种方法,如果用户登录,它会转到auth:api,如果没有,它就不会出现在任何中间件中?

这样做的原因是,如果用户已登录,我想访问用户信息,为此,它需要通过auth:api

2 个答案:

答案 0 :(得分:1)

只要您在请求中包含令牌,就可以访问当前的User

开箱即用,Laravel将默认防护设置为web。当您将路由放置在auth中间件下时,它将默认的保护值设置为传递给中间件的值;即,当您拥有auth:api时,它将默认保护值设置为api请求。

如果您希望能够访问User而不将其置于auth:api中间件之下,则只需要明确说明应使用的防护类型即可。

auth('api')->user(); // or Auth::guard('api')->user();

check()也是如此:

auth('api')->check(); // or Auth::guard('api')->check();

,或者如果您使用的是Request对象:

$request->user('api'); // or request()->user('api');

答案 1 :(得分:-1)

在您的应用程序中不可能有多个相同的路由并且不能独立工作。 Laravel将与您在路线图中找到的第一个匹配。

创建一条路由并在控制器中检查身份验证。

if (Auth::check()) {
    // The user is logged in...
}