laravel的Auth认证,登录、注册后的页面回跳

本文详细介绍了 Laravel 自带的认证中间件 Authenticate.php 的工作原理。重点解析了 guest() 和 intended() 方法如何优雅地处理登录前后的页面跳转,避免了手动管理 session 或 cookie 的复杂性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

laravel自带的 auth 认证中间件 - app/Http/Middleware/Authenticate.php
查看源码:
    if (Auth::guard($guard)->guest()) {
        if ($request->ajax() || $request->wantsJson()) {
            return response('Unauthorized.', 401);
        } else {
            return redirect()->guest($guard.'/login');
        }
    }
里面,对于检测到用户未登录,重定向到登录页面,使用了 'redirect()->guest()' 的方法!
可查看guest()源码:
    public function guest($path, $status = 302, $headers = [], $secure = null)
    {
        $this->session->put('url.intended', $this->generator->full());		// 设置回跳地址

        return $this->to($path, $status, $headers, $secure);
    }
做了2件事:
	1.给session中,设置了当前访问的url链接!(用于我们登录成功后,回跳回来!)
	2.跳转到,我们指定的登录页面

接着,自带的auth机制中,看看它的登录成功后的操作:
    protected function handleUserWasAuthenticated(Request $request, $throttles)
    {
        if ($throttles) {
            $this->clearLoginAttempts($request);
        }

        if (method_exists($this, 'authenticated')) {
            return $this->authenticated($request, Auth::guard($this->getGuard())->user());
        }

        return redirect()->intended($this->redirectPath());		// 获取回跳地址
    }
获取到之前的 '回跳地址',跳转!

这里,我想说明的一点是:
	我们有时间觉得laravel很不好用,主要是我们对它内部的东西,并不熟悉。就拿今天说的这个auth认证。不用laravel默认的登录注册可以,但仍需要借助它的Auth系列方法!因为很方便。包括这些 redirect() 的方法等。
	今天记录下,这个问题,怕过段时间又忘记了。登录、注册,借助redirect()的 guest() 和 intended(),免去了我们自己借助session或cookie,来记录页面的回跳地址,人家已经集成了,还很优美,为什么不用!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值