php - laravel 上的多重身份验证
问题描述
我在 laravel 中在用户表上构建了一个身份验证系统。我必须在同一个用户表上为管理员和普通用户创建两个登录页面。我使用了 spatie 角色和权限,但它不会停止从普通用户登录页面进行管理员登录,反之亦然。
我添加了 checkmaster 中间件,只是为了接受我在 stackoverflow 上的问题。
namespace App\Http\Middleware;
use Closure;
class CheckMaster
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if (\Auth::user()->hasRole('master')) {
return $next($request);
}
return redirect('home');
return $next($request);
}
}
解决方案
仅当用户尝试进入特定路线时,中间件才起作用。
因此,中间件CheckMaster
只有在登录用户尝试进入某个路线时才会发生。
如果您使用 实现Auth\LoginController.php
,您可以在用户通过身份验证时覆盖该函数authenticated
,示例代码:
protected function authenticated(Request $request, $user)
{
if ($user->hasRole('master')) {
return redirect('master-home');
}
return redirect('home');
}
推荐阅读
- python - Python Selenium 使用 Cookie 进行安全代码绕过
- angular - oidc-client ionic 4 : InAppBrowser 在系统浏览器中而不是在应用程序内部显示应用程序
- r - 如何找到数据框中行的平均值和标准差,其中一些具有 NA,而另一些则没有
- google-app-engine - 如何建立从 GAE(具有公共访问权限)到私有 GKE 集群的安全连接
- angular - 如何将服务的输出映射到 Angular 中具有特定值的对象?
- tensorflow - 规范化张量流数据集中的窗口
- matplotlib - Matplotlib 增加次要刻度的数量
- ios - 如何在朋友之间部署和分发 ios Flutter 应用程序(不是应用商店)
- javascript - 如何使 HTML 中 div 元素的 innerText 根据文本的长度自动调整大小?
- json - Apache2没有写入文件的权限[Errno 13] Permission denied Flask Python