中间件后验证

时间:2019-03-14 14:20:37

标签: laravel laravel-5 laravel-5.7

我希望在请求后使用自己的中间件对用户进行身份验证:

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Auth\Middleware\Authenticate;

class AuthenticateAfter extends Authenticate
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @param  string[]  ...$guards
     * @return mixed
     *
     * @throws \Illuminate\Auth\AuthenticationException
     */
    public function handle($request, Closure $next, ...$guards)
    {
        $response = $next($request);

        $this->authenticate($request, $guards);

        return $response;
    }
}

我扩展了Illuminate\Auth\Middleware\Authenticate并修改了handle方法,使其在中间件之后运行。

然后在我的内核中以及正确的路径上对其进行声明。

但是登录后,我总是被踢回到以前的页面。

我想控制我要转到的页面,所以在启动中间件之前,我要进行以下操作:

$request->session()->put('url.intended', 'my-test-url');

但是它无法重定向到该路由。

如何获取它以重定向到自定义路由?

2 个答案:

答案 0 :(得分:0)

尝试:返回redirect('view')或return redirect()-> to('/ route')

答案 1 :(得分:0)

尝试一下,

public function handle($request, Closure $next, ...$guards)
{
    $response = $next($request);

    $this->authenticate($request, $guards);

    return redirect('/your_page_path');    
}

仅供参考,这是我用来验证用户身份的内容:

public function handle($request, Closure $next)
{
    if (auth()->user() && auth()->user()->type != 'admin')
    {
        return redirect('/unauthorized');
    }
    return $next($request);
}