后台不能在一个浏览器登陆,下面简单配置下即可解决这个问题。

设置路由如下:

  1. <?php
  2. /**
  3. * 后台路由,从Illuminate\Routing\Router控制器的auth()方法中复制过来的
  4. */
  5. Route::namespace('Admin')->group(function () {
  6. // Authentication Routes...
  7. Route::get('login', 'Auth\LoginController@showLoginForm')->name('admin.login');
  8. Route::post('login', 'Auth\LoginController@login');
  9. Route::post('logout', 'Auth\LoginController@logout')->name('admin.logout');
  10. // Registration Routes...
  11. Route::get('register', 'Auth\RegisterController@showRegistrationForm')->name('admin.register');
  12. Route::post('register', 'Auth\RegisterController@register');
  13. // Password Reset Routes...
  14. Route::get('password/reset', 'Auth\ForgotPasswordController@showLinkRequestForm')->name('admin.password.request');
  15. Route::post('password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail')->name('admin.password.email');
  16. Route::get('password/reset/{token}', 'Auth\ResetPasswordController@showResetForm')->name('admin.password.reset');
  17. Route::post('password/reset', 'Auth\ResetPasswordController@reset');
  18. Route::middleware(["auth:admin"])->group(function () {
  19. Route::get('/', 'AdminController@index')->name('admin');
  20. });
  21. });
  22. <?php
  23. /**
  24. * 前台路由,从Illuminate\Routing\Router控制器的auth()方法中复制过来的
  25. */
  26. Route::get('/', function () {
  27. return view('welcome');
  28. });
  29. // Authentication Routes...
  30. Route::get('login', 'Auth\LoginController@showLoginForm')->name('login');
  31. Route::post('login', 'Auth\LoginController@login');
  32. Route::post('logout', 'Auth\LoginController@logout')->name('logout');
  33. // Registration Routes...
  34. Route::get('register', 'Auth\RegisterController@showRegistrationForm')->name('register');
  35. Route::post('register', 'Auth\RegisterController@register');
  36. // Password Reset Routes...
  37. Route::get('password/reset', 'Auth\ForgotPasswordController@showLinkRequestForm')->name('password.request');
  38. Route::post('password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail')->name('password.email');
  39. Route::get('password/reset/{token}', 'Auth\ResetPasswordController@showResetForm')->name('password.reset');
  40. Route::post('password/reset', 'Auth\ResetPasswordController@reset');
  41. Route::middleware(["auth:web"])->group(function () {
  42. Route::get('/home', 'HomeController@index')->name('home');
  43. });

设置 config/auth.php:

  1. <?php
  2. return [
  3. /*
  4. |--------------------------------------------------------------------------
  5. | Authentication Defaults
  6. |--------------------------------------------------------------------------
  7. |
  8. | This option controls the default authentication "guard" and password
  9. | reset options for your application. You may change these defaults
  10. | as required, but they're a perfect start for most applications.
  11. |
  12. */
  13. 'defaults' => [
  14. 'guard' => 'web',
  15. 'passwords' => 'users',
  16. ],
  17. /*
  18. |--------------------------------------------------------------------------
  19. | Authentication Guards
  20. |--------------------------------------------------------------------------
  21. |
  22. | Next, you may define every authentication guard for your application.
  23. | Of course, a great default configuration has been defined for you
  24. | here which uses session storage and the Eloquent user provider.
  25. |
  26. | All authentication drivers have a user provider. This defines how the
  27. | users are actually retrieved out of your database or other storage
  28. | mechanisms used by this application to persist your user's data.
  29. |
  30. | Supported: "session", "token"
  31. |
  32. */
  33. 'guards' => [
  34. 'web' => [
  35. 'driver' => 'session',
  36. 'provider' => 'users',
  37. ],
  38. 'admin' => [
  39. 'driver' => 'session',
  40. 'provider' => 'admins',
  41. ],
  42. 'api' => [
  43. 'driver' => 'token',
  44. 'provider' => 'users',
  45. ],
  46. ],
  47. /*
  48. |--------------------------------------------------------------------------
  49. | User Providers
  50. |--------------------------------------------------------------------------
  51. |
  52. | All authentication drivers have a user provider. This defines how the
  53. | users are actually retrieved out of your database or other storage
  54. | mechanisms used by this application to persist your user's data.
  55. |
  56. | If you have multiple user tables or models you may configure multiple
  57. | sources which represent each model / table. These sources may then
  58. | be assigned to any extra authentication guards you have defined.
  59. |
  60. | Supported: "database", "eloquent"
  61. |
  62. */
  63. 'providers' => [
  64. 'users' => [
  65. 'driver' => 'eloquent',
  66. 'model' => App\User::class,
  67. ],
  68. 'admins' => [
  69. 'driver' => 'eloquent',
  70. 'model' => \App\Models\Admin::class,
  71. ],
  72. // 'users' => [
  73. // 'driver' => 'database',
  74. // 'table' => 'users',
  75. // ],
  76. ],
  77. /*
  78. |--------------------------------------------------------------------------
  79. | Resetting Passwords
  80. |--------------------------------------------------------------------------
  81. |
  82. | You may specify multiple password reset configurations if you have more
  83. | than one user table or model in the application and you want to have
  84. | separate password reset settings based on the specific user types.
  85. |
  86. | The expire time is the number of minutes that the reset token should be
  87. | considered valid. This security feature keeps tokens short-lived so
  88. | they have less time to be guessed. You may change this as needed.
  89. |
  90. */
  91. 'passwords' => [
  92. 'users' => [
  93. 'provider' => 'users',
  94. 'table' => 'password_resets',
  95. 'expire' => 60,
  96. ],
  97. ],
  98. ];

为后台所有路由设置前缀 App\Providers\RouteServiceProvider:

  1. <?php
  2. namespace App\Providers;
  3. use Illuminate\Support\Facades\Route;
  4. use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
  5. class RouteServiceProvider extends ServiceProvider
  6. {
  7. /**
  8. * This namespace is applied to your controller routes.
  9. *
  10. * In addition, it is set as the URL generator's root namespace.
  11. *
  12. * @var string
  13. */
  14. protected $namespace = 'App\Http\Controllers';
  15. /**
  16. * Define your route model bindings, pattern filters, etc.
  17. *
  18. * @return void
  19. */
  20. public function boot()
  21. {
  22. //
  23. parent::boot();
  24. }
  25. /**
  26. * Define the routes for the application.
  27. *
  28. * @return void
  29. */
  30. public function map()
  31. {
  32. $this->mapApiRoutes();
  33. $this->mapWebRoutes();
  34. // 为后台路由添加前缀
  35. $this->mapAdminRoutes();
  36. //
  37. }
  38. /**
  39. * Define the "web" routes for the application.
  40. *
  41. * These routes all receive session state, CSRF protection, etc.
  42. *
  43. * @return void
  44. */
  45. protected function mapWebRoutes()
  46. {
  47. Route::middleware('web')
  48. ->namespace($this->namespace)
  49. ->group(base_path('routes/web.php'));
  50. }
  51. /**
  52. * Define the "api" routes for the application.
  53. *
  54. * These routes are typically stateless.
  55. *
  56. * @return void
  57. */
  58. protected function mapApiRoutes()
  59. {
  60. Route::prefix('api')
  61. ->middleware('api')
  62. ->namespace($this->namespace)
  63. ->group(base_path('routes/api.php'));
  64. }
  65. /**
  66. * 加入后台路由
  67. */
  68. protected function mapAdminRoutes()
  69. {
  70. Route::prefix('admin')
  71. ->middleware('web')
  72. ->namespace($this->namespace)
  73. ->group(base_path('routes/admin.php'));
  74. }
  75. }

后台 App\Http\Controllers\Admin\Auth\LoginController 如下:

  1. <?php
  2. namespace App\Http\Controllers\Admin\Auth;
  3. use App\Http\Controllers\Controller;
  4. use Illuminate\Foundation\Auth\AuthenticatesUsers;
  5. use Illuminate\Support\Facades\Auth;
  6. class LoginController extends Controller
  7. {
  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. public function showLoginForm()
  35. {
  36. return view('admin.auth.login');
  37. }
  38. /**
  39. * Get the guard to be used during authentication.
  40. *
  41. * @return \Illuminate\Contracts\Auth\StatefulGuard
  42. */
  43. protected function guard()
  44. {
  45. return Auth::guard('admin');
  46. }
  47. }

前台 App\Http\Controllers\Auth\LoginController 如下:

  1. <?php
  2. namespace App\Http\Controllers\Auth;
  3. use App\Http\Controllers\Controller;
  4. use Illuminate\Foundation\Auth\AuthenticatesUsers;
  5. class LoginController extends Controller
  6. {
  7. /*
  8. |--------------------------------------------------------------------------
  9. | Login Controller
  10. |--------------------------------------------------------------------------
  11. |
  12. | This controller handles authenticating users for the application and
  13. | redirecting them to your home screen. The controller uses a trait
  14. | to conveniently provide its functionality to your applications.
  15. |
  16. */
  17. use AuthenticatesUsers;
  18. /**
  19. * Where to redirect users after login.
  20. *
  21. * @var string
  22. */
  23. protected $redirectTo = '/home';
  24. /**
  25. * Create a new controller instance.
  26. *
  27. * @return void
  28. */
  29. public function __construct()
  30. {
  31. $this->middleware('guest:web')->except('logout');
  32. }
  33. }

App\Http\Middleware\RedirectIfAuthenticated 中间件修改 (防止二次登录,与LoginController中的$this->middleware('guest:web')->except('logout') 这里相呼应,除了退出登录,只要访问类似登录,注册,找回密码的路由时候,都检查一遍用户是否登录,登陆了直接跳到登录页,未登录走auth中间件):

  1. <?php
  2. namespace App\Http\Middleware;
  3. use Closure;
  4. use Illuminate\Support\Facades\Auth;
  5. class RedirectIfAuthenticated
  6. {
  7. /**
  8. * Handle an incoming request.
  9. *
  10. * @param \Illuminate\Http\Request $request
  11. * @param \Closure $next
  12. * @param string|null $guard
  13. * @return mixed
  14. */
  15. public function handle($request, Closure $next, $guard = null)
  16. {
  17. if ($guard == 'web' && Auth::guard($guard)->check()) {
  18. return redirect('/home');
  19. }
  20. if ($guard == 'admin' && Auth::guard($guard)->check()) {
  21. return redirect('/admin');
  22. }
  23. return $next($request);
  24. }
  25. }

效果:

 

 
  1. 原文地址:https://laravel-china.org/articles/21683

laravel 添加后台登陆守护器的更多相关文章

  1. 为wordpress后台登陆添加算术验证码

    对于新建站(个人博客-柠檬https://ninmong.com)的站长来说提高后台的安全性,是一件非常重要的事,添加验证可以起到很好的效果,废话少说,贴代码 //后台登陆数学验证码 function ...

  2. JAVAEE——struts2_04:自定义拦截器、struts2标签、登陆功能和校验登陆拦截器的实现

    一.自定义拦截器 1.架构 2.拦截器创建 //拦截器:第一种创建方式 //拦截器生命周期:随项目的启动而创建,随项目关闭而销毁 public class MyInterceptor implemen ...

  3. Dedecms织梦后台登陆验证码不显示几种解决方法

    Dedecms织梦后台登陆验证码不显示几种解决方法,服务器所造成的验证码不显示问题看这里: 方法一:查看服务器的php版本是否与程序版本兼容(织梦程序PHP版本查看方法:打开www.96net.com ...

  4. 【Java EE 学习 70 上】【数据采集系统第二天】【数据加密处理】【登陆验证】【登陆拦截器】【新建调查】【查询调查】

    一.数据加密处理 这里使用MD5加密处理,使用java中自带加密工具类MessageDigest. 该类有一个方法digest,该方法输入参数是一个字符串返回值是一个长度为16的字节数组.最关键的是需 ...

  5. DEDE首页会员部分,后台登陆,会员登录相关页面

    首页会员涉及部分 \templets\default\style\page.css \member\ajax_loginsta.php 会员登录页面涉及部分 \member\templets\inde ...

  6. phpcms v9后台登陆验证码无法显示,怎么取消验证码

    phpcms v9后台登陆验证码无法显示论坛里关于这个问题貌似一直没有解决,查看源代码后发现,关键一点是获取验证码的图片与全局变量SITE_URL相关,也就是网站的目录, 所以只要修改cache/co ...

  7. ecstore 后台登陆跳转到 api失败,中心请求网店API失败

    解决过程没有具体参与,官方解决后回复的邮件,可以参考一下: 后台登陆错误图:   商派解决方法邮件:   特别注意:这个错误提示有时候也跟ecstore的nginx服务器伪静态有关,具体参考: htt ...

  8. 向SharePoint页面添加后台代码

    转:http://www.cnblogs.com/chenzehe/archive/2009/12/25/1631863.html 在本文中,我将跟大家一起讨论,为MOSS的页面添加服务器端代码的另一 ...

  9. dede后台登陆后一片空白的解决办法汇总

    dede后台登陆后一片空白的第一种解决办法: 找到:include/common.inc.php文件,打开,查找程序代码://error_reporting(E_ALL);error_reportin ...

随机推荐

  1. libev个人问题解惑

    我们的游戏后端一直以来用的都是libev,之前尝试过去读源码,因为里面用了大量宏和自己也不够耐心的原因,一直没有看懂.这次终于痛下决心,一定要啃下它,于是在这个星期调整自己的工作学习方式(在读源码的过 ...

  2. php随机获取数组里面的值

    srand() 函数播下随机数发生器种子,array_rand() 函数从数组中随机选出一个或多个元素,并返回.第二个参数用来确定要选出几个元素.如果选出的元素不止一个,则返回包含随机键名的数组,否则 ...

  3. 【学习】024 springCloud

    单点系统架构 传统项目架构 传统项目分为三层架构,将业务逻辑层.数据库访问层.控制层放入在一个项目中. 优点:适合于个人或者小团队开发,不适合大团队开发. 分布式项目架构 根据业务需求进行拆分成N个子 ...

  4. 第02课:启动GDB调试

    使用GDB调试程序一般有三种方式: gdb filename gdb attach pid dgb filename corename 也对应这本节课的核心内容: 直接调试目标程序 附加进程 调试co ...

  5. 【洛谷P2894】Hotel 线段树+二分查询

    题目大意:给定一个长度为 N 的序列,每个点有两种状态 1/0,表示占有和空闲,现支持 first-fit 查询是否有一段连续的长度为 X 的空闲子序列和区间赋值操作. 题解:get到了线段树新技能. ...

  6. MyBatis:Parameter Maps collection does not contain value for 的问题解决

    Result Maps collection does not contain value for   frontpreviewprofitManage.cdata 出现上述错误 主要是因为你的sel ...

  7. urllib详细版

    urllib是python内置的处理HTTP请求的库,主要包含以下四个模块 request 模块,是最基本的处理HTTP请求的模块. error 异常处理模块,如果出现请求错误,可以捕获这些错误,保证 ...

  8. 【leetcode】Basic Calculator III

    题目如下: Implement a basic calculator to evaluate a simple expression string. The expression string may ...

  9. 【方法】原生js实现方法ajax封装

    /* 参数说明* type[String] 请求方式('POST'或'GET') 默认设置'GET'方式* dataType[String] 获取到的后台数据格式 默认'JSON'格式* async[ ...

  10. CSS无图片三角形

    border:6px solid #f2f2f2; border-color:#999 transparent transparent transparent; border-style:solid ...