身份验证后有条件设置要重定向到的URL

时间:2019-05-28 20:56:30

标签: laravel laravel-5

在我的应用中,帖子作者可以将其他公开帖子设置为私人。如果未经身份验证的用户尝试访问该帖子,则会提示他们登录。

他们通过身份验证后,我想将其重定向回原始帖子网址,以便他们可以阅读该私人帖子。

此行为通常由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)。

这可行吗?我什至会以正确的方式思考这个问题吗?

1 个答案:

答案 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'));
        }
    }