我正在尝试编辑主Authenticate.php
中间件,但是当我添加以下内容时,我收到错误
app.app已将您重定向次数
我的目的是编辑auth中间件以检查用户是否有用户名。这样可以防止有人退出注册页面,然后直接进入网站的安全部分。
Auth Middleware:
public function handle($request, Closure $next)
{
if ($this->auth->guest()) {
if ($request->ajax()) {
return response('Unauthorized.', 401);
} else {
return redirect()->guest('/');
}
}
// This is the modified portion. Check for a username, if one is found, complete
the request, otherwise redirect back to the oauth page.
if (Auth::user()->username)
{
return $next($request);
}
return redirect()->route('oauth.oauth')->with('user' , Auth::user()->id);
}
答案 0 :(得分:0)
您正在使用auth中间件创建循环引用,以便在Auth::user()->username
不存在时将其重定向到您的oauth页面。
他们正在点击oauth页面然后检查失败,因此不断重定向到该页面。
最好的办法是在新的中间件中拆分它,但如果您不想这样做,您可以检查它们正在点击的URL并根据此进行排除。
例如:
在顶部添加use Request;
,然后在中间件的正文中添加以下内容:
if (Request::path() == 'your/oauth/path')
{
return $next($request);
}
所以它可以像这样:
public function handle($request, Closure $next)
{
if ($this->auth->guest()) {
if ($request->ajax()) {
return response('Unauthorized.', 401);
} else {
return redirect()->guest('/');
}
}
// This is the modified portion. Check for a username, if one is found, complete
the request, otherwise redirect back to the oauth page.
if (Auth::user()->username)
{
return $next($request);
}
if (Request::path() == 'your/oauth/path')
{
return $next($request);
}
return redirect()->route('oauth.oauth')->with('user' , Auth::user()->id);
}
只需将'your/oauth/path'
替换为实际路径即可。该示例看起来像一个完整的网址www.example.com/your/oauth/path