当前位置:首页 > CMS教程 > 其它CMS > 列表

Laravel 5.5基于内置的Auth模块实现前后台登陆详解

发布:smiling 来源: PHP粉丝网  添加日期:2021-08-25 10:05:11 浏览: 评论:0 

最近在使用laravel5.5,利用其实现了一个功能,下面分享给大家,这篇文章主要给大家介绍了关于Laravel 5.5基于内置的Auth模块如何实现前后台登陆的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。

方法如下:

步骤1:生成Auth

在项目建立完成后,生成内置Auth组件:

php artisan make:auth

步骤2:添加guard

打开config\auth.php,为方便前后台用户切换,项目共用Users表

  1. 'guards' => [ 
  2.  //... 
  3.  'admin' => [ 
  4.   'driver' => 'session'
  5.   'provider' => 'users'
  6.  ], 
  7.  //... 
  8.  ], 

步骤3:实现基类

  1. class AdminController extends BaseController 
  2.  use AuthorizesRequests, DispatchesJobs, ValidatesRequests; 
  3.  
  4.  public function __construct() 
  5.  { 
  6.  $this->middleware('auth:admin'); 
  7.  } 

步骤4:实现后台登陆控制器

新建appcontrollersAdminLoginController.php

  1. <?php 
  2. namespace App\Http\Controllers\Admin; 
  3. use App\Http\Controllers\Controller; 
  4. use Illuminate\Support\Facades\Auth; 
  5. use Illuminate\Foundation\Auth\AuthenticatesUsers; 
  6. use Illuminate\Http\Request; 
  7. class LoginController extends Controller 
  8.  /* 
  9.  |-------------------------------------------------------------------------- 
  10.  | Login Controller 
  11.  |-------------------------------------------------------------------------- 
  12.  | 
  13.  | This controller handles authenticating users for the application and 
  14.  | redirecting them to your home screen. The controller uses a trait 
  15.  | to conveniently provide its functionality to your applications. 
  16.  | 
  17.  */ 
  18.  use AuthenticatesUsers; 
  19.  /** 
  20.  * Where to redirect users after login. 
  21.  * 
  22.  * @var string 
  23.  */ 
  24.  protected $redirectTo = '/admin'
  25.  /** 
  26.  * Create a new controller instance. 
  27.  * 
  28.  * @return void 
  29.  */ 
  30.  public function __construct() 
  31.  { 
  32.  $this->middleware('guest:admin')->except('logout'); 
  33.  } 
  34.  /** 
  35.  * 重写登陆页面 
  36.  * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View 
  37.  */ 
  38.  public function showLoginForm() 
  39.  { 
  40.  return view('backend.login'); 
  41.  } 
  42.  /** 
  43.  * 重写退出方法 
  44.  * @param Request $request 
  45.  * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector 
  46.  */ 
  47.  public function logout(Request $request
  48.  { 
  49.  $this->guard()->logout(); 
  50.  $request->session()->flush(); 
  51.  $request->session()->regenerate(); 
  52.  return redirect('/admin/login'); 
  53.  } 
  54.  /** 
  55.  * 重写guard认证 
  56.  * @return mixed 
  57.  */ 
  58.  protected function guard() 
  59.  { 
  60.  return Auth::guard('admin'); 
  61.  } 

步骤5:实现登陆后跳转到不同路径

app\Middleware\RedirectIfAuthenticated.php

  1. public function handle($request, Closure $next$guard = null) 
  2.  if (Auth::guard($guard)->check()) { 
  3.   $path = $guard ? '/admin' : '/home'
  4.   return redirect($path); 
  5.  } 
  6.  return $next($request); 

步骤6:实现未通过认证跳转不同登陆页

app\Exceptions\Handler.php

  1. /** 
  2.  * 重写实现未认证用户跳转至相应登陆页 
  3.  * @param \Illuminate\Http\Request $request 
  4.  * @param AuthenticationException $exception 
  5.  * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\RedirectResponse 
  6.  */ 
  7.  protected function unauthenticated($request, AuthenticationException $exception
  8.  { 
  9.  if($request->expectsJson()){ 
  10.   return response()->json(['message' => $exception->getMessage()], 401); 
  11.  }else
  12.   return in_array('admin'$exception->guards()) ? return redirect()->guest('/admin/login') : redirect()->guest('login'); 
  13.  } 
  14.  } 

完成。

Tags: Laravel5 5 Auth

分享到: