我想在auth:api
中间件中有一条相同的路由,并且也要走出它。
现在,如果我将两者都包括在内,即使用户已登录,也仅考虑auth:api
中的一个。
有没有一种方法,如果用户登录,它会转到auth:api
,如果没有,它就不会出现在任何中间件中?
这样做的原因是,如果用户已登录,我想访问用户信息,为此,它需要通过auth:api
。
答案 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...
}