Laravel Auth 更为简便的使用
前言
众所周知,我们绝大多数项目最少会有前台展示页面【不管是pc还是wap甚至于api】和一个后台管理页面
那么在使用Auth门面进行用户管理时,因为数据表的不一致,你可能会书写如下代码
前台使用
// 验证
Auth::guard('home')->check();
// 取出用户
Auth::guard('home')->user();
后台使用
// 验证
Auth::guard('admin')->check();
// 取出用户
Auth::guard('admin')->user();
你会发现你都会使用guard来指定用户组,对于我这种懒人来说,这种明显是不太智能化的
解决方法
以下是我自己使用laravel以来一直使用的小方法,已经很久了,不知道有没有人公布出来过类似的方法
其实很简单,只需要在使用端的路由,添加一个基础中间件,让基础中间件来修改config默认配置即可
核心代码
config([
'auth.defaults.guard' => 'admin'
]);
然后你就可以在后台直接使用,前台和其他端同理
// 验证
Auth::check();
// 取出用户
Auth::user();
附上自己的demo部分源码给予参考
admin路由文件描述
路由服务提供者代码
中间件文件代码
这里就不再赘述如何定义中间件了,可以自己去查找中间件文档
最后可能会有人想直接写在对应端的BaseController不也一样吗,但是如果当你的请求还没有到控制器呢?
比如登录验证不就是在中间件内进行的吗?
比如表单验证不也还是在控制器之前吗?【前提是你在request前用到了Auth,比如某个数据主键你希望是当前用户可管理的】
本作品采用《CC 协议》,转载必须注明作者和本文链接
我也是这样处理的,很方便
想了半天终于好像懂了,这样后端就不用了
Auth::guard('admin')->user();
直接Auth::user();
如果
auth
不自己指定guard
,guard
会自动变成当前登录的用户guard
,比如登录了前台用户,后台用户没有登录,再使用你的方法获取后台用户,会变成得到前台用户上面出现的情况是在多
guard
下,具体可以看下面两个文件源代码测试代码
这个代码已经没有必要加了 return $this->auth->shouldUse($guard); 已经用这个代码替代了 除非是 多个 guard
还不错,可以完善一点,通过参数控制要设置的默认 guard,,,
使用:
中间件: