Laravel 5 Laravel中间件路由组的一次性授权
我正在用Laravel 5设计系统的某些部分。预期其行为如下所述Laravel 5 Laravel中间件路由组的一次性授权,laravel-5,authorization,Laravel 5,Authorization,我正在用Laravel 5设计系统的某些部分。预期其行为如下所述 用户获取唯一的url。可以通过电子邮件提供,但这并不重要 他单击它,并使用一些临时令牌(在会话生命周期内)登录,这使他有可能访问允许路由组中的所有URL,例如,帐户/*,但如果他想访问其他受限制的URL,则要求他使用用户名/密码进行授权 如果他已经被授权,则令牌登录对他无效 我的问题是关于在《开箱即用》中这样做的可能性。我知道有一些中间件服务,但我不确定默认的保护行为是否不需要改变,才能像我预期的那样工作。 我以前使用过Symfo
帐户/*
,但如果他想访问其他受限制的URL,则要求他使用用户名/密码进行授权我以前使用过Symfony,默认情况下它是通过防火墙解决的,所以在Laravel中也可能有预构建的解决方案?您完全可以使用Laravel来完成此操作,下面是一个未经测试的示例代码
public function handle($request, Closure $next)
{
if ($this->auth->guest()) {
if (preg_match('account', $request->route()->getName()) { //if url is under account, you can get route info from $request->route();
if (!session()->get($token)) { // if not have valid token
if ($request->ajax()) {
return response('Unauthorized.', 401);
} else {
return redirect()->route('admin.login.index',['referrer'=>urlencode($request->url())]);
}
}
} else {
if ($request->ajax()) {
return response('Unauthorized.', 401);
} else {
return redirect()->route('admin.login.index',['referrer'=>urlencode($request->url())]);
}
}
}
return $next($request);
}
然后从您的路径只需将中间件auth添加到您的组中,这是一种在中间件上定义您的请求的方法,Laravel5.2支持多中间件