前言
本文主要介绍了关于laravel 5.5基于内置的auth模块实现前后台登陆的相关内容,更多关于auth模块的内容大家可以参考这篇文章:http://www.jb51.net/article/121401.htm
下面话不多说了,来一起看看详细的介绍吧。
方法如下:
步骤1:生成auth
在项目建立完成后,生成内置auth组件:
php artisan make:auth
步骤2:添加guard
打开configauth.php,为方便前后台用户切换,项目共用users表
'guards' => [ //... 'admin' => [ 'driver' => 'session', 'provider' => 'users', ], //... ],
步骤3:实现基类
class admincontroller extends basecontroller
{
use authorizesrequests, dispatchesjobs, validatesrequests;
public function __construct()
{
$this->middleware('auth:admin');
}
}
步骤4:实现后台登陆控制器
新建appcontrollersadminlogincontroller.php
<?php
namespace apphttpcontrollersadmin;
use apphttpcontrollerscontroller;
use illuminatesupportfacadesauth;
use illuminatefoundationauthauthenticatesusers;
use illuminatehttprequest;
class logincontroller extends controller
{
/*
|--------------------------------------------------------------------------
| login controller
|--------------------------------------------------------------------------
|
| this controller handles authenticating users for the application and
| redirecting them to your home screen. the controller uses a trait
| to conveniently provide its functionality to your applications.
|
*/
use authenticatesusers;
/**
* where to redirect users after login.
*
* @var string
*/
protected $redirectto = '/admin';
/**
* create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest:admin')->except('logout');
}
/**
* 重写登陆页面
* @return illuminatecontractsviewfactory|illuminateviewview
*/
public function showloginform()
{
return view('backend.login');
}
/**
* 重写退出方法
* @param request $request
* @return illuminatehttpredirectresponse|illuminateroutingredirector
*/
public function logout(request $request)
{
$this->guard()->logout();
$request->session()->flush();
$request->session()->regenerate();
return redirect('/admin/login');
}
/**
* 重写guard认证
* @return mixed
*/
protected function guard()
{
return auth::guard('admin');
}
}
步骤5:实现登陆后跳转到不同路径
appmiddlewareredirectifauthenticated.php
public function handle($request, closure $next, $guard = null)
{
if (auth::guard($guard)->check()) {
$path = $guard ? '/admin' : '/home';
return redirect($path);
}
return $next($request);
}
步骤6:实现未通过认证跳转不同登陆页
appexceptionshandler.php
/**
* 重写实现未认证用户跳转至相应登陆页
* @param illuminatehttprequest $request
* @param authenticationexception $exception
* @return illuminatehttpjsonresponse|illuminatehttpredirectresponse
*/
protected function unauthenticated($request, authenticationexception $exception)
{
if($request->expectsjson()){
return response()->json(['message' => $exception->getmessage()], 401);
}else{
return in_array('admin', $exception->guards()) ? return redirect()->guest('/admin/login') : redirect()->guest('login');
}
}
完成
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对硕编程的支持。
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!