laravel如何使中间件重定向

时间:2017-06-19 15:30:15

标签: php redirect laravel-5

我已经创建了表单供用户在我的帖子中发表评论但是我需要在提交表单之前检查Auth是否已登录。我怎么能这样做?

对我来说,我已经使用中间件来保护它,但是如果使用不登录它会在用户登录时重定向到登录表单,它不会重定向回帖子路由/show-posts/{post},它会重定向回到路由{{ 1}}。我该如何解决这个问题?

网址显示单一帖子

/comments

网址表单评论表单

Route::get( '/show-post/{post}', 'HomePageController@single_show')
     ->name('home.post.show' );

CommentsController

Route::resource('/comments', 'CommentsController');

1 个答案:

答案 0 :(得分:0)

您可以创建中间件类并重定向,如下所示:

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\Auth;

class RedirectToComments
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @param  string|null  $guard
     * @return mixed
     */
    public function handle($request, Closure $next, $guard = null)
    {
        if (Auth::check()) {
            return redirect()->route('comments');
        }
        return $next($request);
    }
}

这是通过中间件重定向的一般形式,只需根据需要修改重定向到哪个路由或添加更多条件逻辑。