Laravel 5.3 不同用户表登录认证-优化
2016-12-28 17:44
423 查看
具体看这篇文章:
Laravel 5.3 不同用户表登录认证
需要优化的地方:不需要新增中间件,【后台管理认证中间件】部分全部去掉,使用框架自带的中间件传参就行了。
Admin/LoginController.php 中修改中间件:
修改为:
仅仅改了个冒号,冒号后面即为参数,给默认的guest中间件传参。
修改guest中间件App\Http\Middleware\RedirectIfAuthenticated.php:
根据guard名来重定向,已登陆时,访问登录页面跳转的地址。
修改路由:
为:
仅仅改了个冒号,冒号后面即为参数,给默认的auth中间件传参。
修改App\Exceptions\Handler.php的unauthenticated()方法:
这里也是根据guard名来重定向,未登陆时,访问需要登陆的页面跳转的地址。
注:
默认的auth中间件(Illuminate\Auth\Middleware\Authenticate),在验证失败后,会抛出异常
抛出异常后会触发App\Exceptions\Handler类的unauthenticated()方法。
Laravel 5.3 不同用户表登录认证
需要优化的地方:不需要新增中间件,【后台管理认证中间件】部分全部去掉,使用框架自带的中间件传参就行了。
Admin/LoginController.php 中修改中间件:
$this->middleware('guest.admin', ['except' => 'logout']);
修改为:
$this->middleware('guest:admin', ['except' => 'logout']);
仅仅改了个冒号,冒号后面即为参数,给默认的guest中间件传参。
修改guest中间件App\Http\Middleware\RedirectIfAuthenticated.php:
public function handle($request, Closure $next, $guard = null) { if (Auth::guard($guard)->check()) { switch ($guard) { case 'admin': return redirect('/admin'); break; default: return redirect('/home'); break; } } return $next($request); }
根据guard名来重定向,已登陆时,访问登录页面跳转的地址。
修改路由:
Route::group(['middleware' => 'auth.admin'], function () { Route::get('/', 'Admin\IndexController@index'); });
为:
Route::group(['middleware' => 'auth:admin'], function () { Route::get('/', 'Admin\IndexController@index'); });
仅仅改了个冒号,冒号后面即为参数,给默认的auth中间件传参。
修改App\Exceptions\Handler.php的unauthenticated()方法:
protected function unauthenticated($request, AuthenticationException $exception) { if ($request->expectsJson()) { return response()->json(['error' => 'Unauthenticated.'], 401); } $guards = $exception->guards(); $guard = ! empty($guards) ? $guards[0] : null; switch ($guard) { case 'admin': return redirect()->guest('admin/login'); break; default: return redire 9aba ct()->guest('login'); break; } }
这里也是根据guard名来重定向,未登陆时,访问需要登陆的页面跳转的地址。
注:
默认的auth中间件(Illuminate\Auth\Middleware\Authenticate),在验证失败后,会抛出异常
throw new AuthenticationException('Unauthenticated.', $guards);
抛出异常后会触发App\Exceptions\Handler类的unauthenticated()方法。
相关文章推荐
- Laravel 5.3 不同用户表登录认证
- Laravel 5.3自带的用户认证--路由笔记
- Laravel 5.3 多用户表登录
- laravel 5.3 单用户登录简单实现
- Laravel 5.2 中多用户认证实现(前台和后台登录)
- laravel5.2.22 自带用户登录认证笔记
- Laravel 5.2 中多用户认证实现(前台和后台登录)
- laravel 5.3用户认证--默认的用户表数据迁移
- laravel 5.3 多用户认证
- Laravel 5.3 使用内置的 Auth 组件实现多用户认证功能以及登陆才能访问后台的功能的一种实现方法
- 如何限制同一客户端登录的用户数量以及禁止同一用户同时在不同客户端登录?
- 使用不同域用户登录AX2009
- 在 ASP.NET 中实现不同角色的用户使用不同登录界面的方法
- 微软资格认证:域用户的登录过程和GC的关系
- MySQL命令行 不同端口登录 执行SQL文件 创建用户 赋予权限 修改root密码
- 速度优化:只加载一个CSS满足所有要求、针对不同浏览器加载不同CSS、正式站改版测试如何不影响用户体验
- 在 ASP.NET 中实现不同角色的用户使用不同登录界面的方法
- 用命令行工具来注销相同或不同域内的服务器上的登录用户
- 统一用户认证和单点登录解决方案
- 在 ASP.NET 中实现不同角色的用户使用不同登录界面的方法