如果在 Laravel 5.3 中通过身份验证,则重定向

Posted

技术标签:

【中文标题】如果在 Laravel 5.3 中通过身份验证,则重定向【英文标题】:Redirect if authenticated in Laravel 5.3 【发布时间】:2016-12-30 17:33:06 【问题描述】:

我在Laravel 5.3 中使用Auth 脚手架,并更改了auth 的路线。所以我使用/signin/signup 代替/login/register

Laravel 5.2 中,我们默认在auth 中间件中有这个,

public function handle($request, Closure $next, $guard = null)

    if (Auth::guard($guard)->guest()) 
        if ($request->ajax() || $request->wantsJson()) 
            return response('Unauthorized.', 401);
        

        return redirect()->guest('login');
    

    return $next($request);

如果用户没有登录,这将重定向到 login 路由。在 Laravel 5.3 我们有这个,

public function handle($request, Closure $next, $guard = null)

    if (Auth::guard($guard)->check()) 
        return redirect('/');
    

    return $next($request);

这会将已登录的用户重定向到默认路由/。所以他们在 5.3 中改变了它。我们没有定义访客去哪里,而是定义登录用户去哪里。

我的问题是,我将如何本地到 Laravel 5.3 更改客人去?

因为目前,尝试访问受中间件保护的站点的人会自动以/login 路由结束。我想将其更改为 /signin,但我找不到任何地方可以自定义此行为。

有什么想法吗?

【问题讨论】:

【参考方案1】:

你可以在 app.blade.php 中用 JS 试试这个:

@if (Auth::guest())
<script type="text/javascript"> window.location = "url('/login')";    </script>
@endif

【讨论】:

【参考方案2】:

如果客人离开,我将如何“原生”更改为 Laravel 5.3?

Looks likeapp/Exceptions/Handler.php 中有一个新的unauthenticated() 方法,它处理未经身份验证的用户并重定向到login

由于这是您应用的一部分,您没有理由不能自定义它以重定向到其他地方。

【讨论】:

谢谢!上帝……除了那里,我到处找。

以上是关于如果在 Laravel 5.3 中通过身份验证,则重定向的主要内容,如果未能解决你的问题,请参考以下文章

如果用户在 iframe 中通过身份验证而不是重定向父窗口,则 iframe

Laravel 5.3 Passport API 在 Postman 中使用个人访问令牌未经身份验证

Laravel 5.3 Auth 外观正在更改为默认的经过身份验证的用户

Laravel 5.3 中间件:创建用于身份验证的中间件

在 Laravel 5.3 中使用多个身份验证?

护照身份验证在 laravel 5.3 中不起作用