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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。