laravel - 我可以在一个模型中使用两个防护装置吗?
问题描述
我需要使用一种模型以两种不同的方式对用户进行身份验证。是否可以定义两个警卫并选择更可取的一个,例如在控制器级别?
另外,也许有更好的方法来使用 laravel 实现它?将不胜感激任何想法。
解决方案
对的,这是可能的。您应该创建两个不同的 LoginControllers 并分配路由,创建两个不同的 Auth 中间件,并且可能还会稍微更改 RedirectIfAuthenticated 中间件。
在这两个 LoginControllers 中,您应该像这样定义您的守卫:
protected function guard()
{
return Auth::guard('admin');
}
如果你想为你的守卫分开路由,而不是在 RedirectIfAuthenticated 中间件中,你应该为两个守卫定义重定向
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->check()) {
if($guard == 'admin') return redirect('/admin');
return redirect('/');
}
return $next($request);
}
推荐阅读
- .net-core - ASP.NET Core MVC 项目无法加载程序集
- python - 拆分韩文和数字
- php - 如何在 Woocommerce 中仅获取可用性变化计数
- javascript - 是否可以在不知道父键的情况下解构嵌套对象?
- php - 如何在 CodeIgniter 中进行基于角色的访问控制?
- java - 解析 XML 并替换来自不同数据源的值
- r - 多个类别分组变量的条形图
- apache-kafka - kafka-consumer-groups.sh 没有列出 Kafka 消费者组
- c# - 如何更改 Autofac 中具有较长生命周期的对象中的值?
- go - Web 进程在启动 golang 后 60 秒内无法绑定到 $PORT