在我的应用中,帖子作者可以将其他公开帖子设置为私人。如果未经身份验证的用户尝试访问该帖子,则会提示他们登录。
他们通过身份验证后,我想将其重定向回原始帖子网址,以便他们可以阅读该私人帖子。
此行为通常由Laravel的默认身份验证中间件处理。但是,由于帖子通常是公开的,因此在这种情况下我不能使用它。
这是我当前无法正常运行的中间件:
public function handle($request, Closure $next)
{
$post = $request->route('post');
if ($post->isPrivate()) {
$request->session()->setPreviousUrl($request->url());
return redirect()->guest('login');
}
return $next($request);
}
我希望我可以设置一个自定义URL来重定向到(/ posts / {id})。但是,当我尝试登录时,我被重定向到默认的$ redirectTo属性(/ dashboard)。
这可行吗?我什至会以正确的方式思考这个问题吗?
答案 0 :(得分:0)
@adam,谢谢您的帮助!
对于其他人,这是我的最终代码:
中间件:
public function handle($request, Closure $next)
{
if (auth()->check()) {
return $next($request);
}
$post = $request->route('post');
if ($post->isPrivate()) {
$request->session()->setPreviousUrl($request->path());
return redirect()->guest('login');
}
return $next($request);
}
LoginController:
protected function authenticated(Request $request, $user)
{
if ($request->session()->has('url.intended')) {
return redirect($request->session()->get('url.intended'));
}
}