我正在Laravel 5中设计系统的某些部分。预计行为如下所述。
account/*
,但如果他想要访问其他受限制的网址,则会要求他使用其用户名/密码进行授权。我的问题是关于在Laravel开箱即可做类似事情的可能性。我知道有一些中间件服务,但我不确定是否需要将默认的Guard行为更改为按预期工作。 我之前曾经和Symfony一起工作过,默认情况下它是由防火墙解决的,所以也许在Laravel中有预建的解决方案吗?
答案 0 :(得分:0)
你绝对可以使用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到您的组,这是一种在中间件上定义请求的方法,laravel 5.2支持多个中间件。