laravel之Auth剖析

本文探讨了在Laravel项目中使用默认Auth系统的原因,通过分析代码揭示了Auth服务的工作原理。从控制器中的认证服务到中间件,再到AuthManager和Guard的交互,特别是怎样根据配置文件`config/auth.php`动态选择Session或Token驱动。文中详细解释了Auth::guard('admin')的内部操作,并指出在没有指定guard时,系统会使用默认guard。最后,文章指出了在调用Auth方法时,如何通过魔术方法最终操作SessionDriver实例完成认证流程。

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

最近的项目虽然已经有自己的登陆认证系统,但是感觉接入laravel默认的始终会好一些,手册上只提供了几个简单的使用方法.搞技术的就需要有”然其然,然其所以然”的精神,所以好好的扒了扒其代码,以此记录.

通过在 控制器中添加

$this->middleware('auth');

为控制器提供认证服务
查看auth指向的中间件类的文件,在构造函数中注入了一个

Illuminate\Contracts\Auth\Factory

,并且handle方法参数guards使用的是可变参数的写法,后面处理可变的,从代码里可以看出,guard可以传多个,经过遍历,哪个guard有结果都可以继续将流程走下去.

在判断guard的结果时,多次使用了上面构造函数中的 使用 $this->auth 引用, 注入接口Illuminate\Contracts\Auth\Factory 看源代码,其只是个interface,一个接口而已,但其具体是由哪个实现了该接口的类实现的呢.
在此为了方便,我偷懒用
dd($this->auth);
打印出来了该实例,类名叫 AuthManager , 那这个 AuthManager应该是已经注册在容器中了,找到Auth的Provider ,I

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值