Laravel 5.5基于内置的Auth模块实现前后台登陆详解
前言
本文主要介绍了关于Laravel5.5基于内置的Auth模块实现前后台登陆的相关内容,更多关于Auth模块的内容大家可以参考这篇文章:https://www.nhooo.com/article/121401.htm
下面话不多说了,来一起看看详细的介绍吧。
方法如下:
步骤1:生成Auth
在项目建立完成后,生成内置Auth组件:
phpartisanmake:auth
步骤2:添加guard
打开config\auth.php,为方便前后台用户切换,项目共用Users表
'guards'=>[ //... 'admin'=>[ 'driver'=>'session', 'provider'=>'users', ], //... ],
步骤3:实现基类
classAdminControllerextendsBaseController { useAuthorizesRequests,DispatchesJobs,ValidatesRequests; publicfunction__construct() { $this->middleware('auth:admin'); } }
步骤4:实现后台登陆控制器
新建appcontrollersAdminLoginController.php
middleware('guest:admin')->except('logout'); } /** *重写登陆页面 *@return\Illuminate\Contracts\View\Factory|\Illuminate\View\View */ publicfunctionshowLoginForm() { returnview('backend.login'); } /** *重写退出方法 *@paramRequest$request *@return\Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector */ publicfunctionlogout(Request$request) { $this->guard()->logout(); $request->session()->flush(); $request->session()->regenerate(); returnredirect('/admin/login'); } /** *重写guard认证 *@returnmixed */ protectedfunctionguard() { returnAuth::guard('admin'); } }
步骤5:实现登陆后跳转到不同路径
app\Middleware\RedirectIfAuthenticated.php
publicfunctionhandle($request,Closure$next,$guard=null) { if(Auth::guard($guard)->check()){ $path=$guard?'/admin':'/home'; returnredirect($path); } return$next($request); }
步骤6:实现未通过认证跳转不同登陆页
app\Exceptions\Handler.php
/** *重写实现未认证用户跳转至相应登陆页 *@param\Illuminate\Http\Request$request *@paramAuthenticationException$exception *@return\Illuminate\Http\JsonResponse|\Illuminate\Http\RedirectResponse */ protectedfunctionunauthenticated($request,AuthenticationException$exception) { if($request->expectsJson()){ returnresponse()->json(['message'=>$exception->getMessage()],401); }else{ returnin_array('admin',$exception->guards())?returnredirect()->guest('/admin/login'):redirect()->guest('login'); } }
完成
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对毛票票的支持。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。