在登录laravel之前重定向,以避免第二次登录

在登录laravel之前重定向,以避免第二次登录,laravel,authentication,redirect,Laravel,Authentication,Redirect,我有php/laravel web应用程序。 我使用laravel auth登录用户。但当我有两张打开的卡片,上面有登录页面时,他们不知道一个页面上的用户已经登录 我读到,当用户登录一个页面时,我必须在中间件中重定向 我尝试在带有覆盖功能的LoginController中执行此操作,但它不起作用 public function authenticate(Request $request) { $credentials = $request->only('email'

我有php/laravel web应用程序。 我使用laravel auth登录用户。但当我有两张打开的卡片,上面有登录页面时,他们不知道一个页面上的用户已经登录

我读到,当用户登录一个页面时,我必须在中间件中重定向

我尝试在带有覆盖功能的LoginController中执行此操作,但它不起作用

public function authenticate(Request $request)
    {
        $credentials = $request->only('email', 'password');

        if (Auth::check()){
            return redirect()->intended('dashboard');
        } else if (Auth::attempt($credentials)) {
            return redirect()->intended('dashboard');
        }
    }

我只想在登录到用户登录的应用程序之前进行检查,但我不清楚在哪里。

好的,我尝试解释发生了什么

当您在登录表单中打开两个登录表单和ofc时,您已经有了生成值和ofc的csrf令牌字段,但这是一种模式

假设您的csrf_令牌值在两种形式中都是
123
,并且当您成功登录时,laravel会通过向会话中添加您的用户id来更新会话,因此如果您的用户id是
1
,则您的令牌将更改为
1231
(同样,这是一个哈希值,但会随我一起出现)当您提交第二个表单时,其中包含
123
标记,您可以猜到
123
不等于
1231
,它会抛出
TokenMissmatchException

在您的情况下,您可以打开
App\Exceptions\Handler.php
并将其添加到您的Handler方法中

/**
 * Render an exception into an HTTP response.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  \Throwable  $exception
 * @return \Symfony\Component\HttpFoundation\Response
 *
 * @throws \Throwable
 */
public function render($request, Throwable $exception)
{
    // Checks if exception is instance of TokenMissmatchException && it throwed in the login page
    if ($exception instanceof \Illuminate\Session\TokenMismatchException && $request->path() === 'login') {
        $redirectPath = '/';

        return redirect($redirectPath);
    }

    return parent::render($request, $exception);
}

Laravel会自动为您执行此操作,您不能多次登录,但如果我想在第二页登录,为什么会出现419错误?Laravel会检查您是否登录,如果是,则会抛出419例外这就是为什么我想在检查登录之前实现重定向以避免此错误,但我不知道在哪里。或者我想用错误的方法来做这件事?哦,好吧,现在我明白了。但是安全性呢?你的意思是什么?如果有人想假装是使用另一个csrf的用户,laravel仍然不允许不必要的访问?是的,它不允许,因为每个用户令牌都是一个唯一的哈希。根本不,这个方法只检查是否抛出了419错误,如果是,它将用户重定向到主页