【问题标题】:i have a form in laravel when i click on submit button it says token mismatch [duplicate]当我单击提交按钮时,我在 laravel 中有一个表单,它显示令牌不匹配 [重复]
【发布时间】:2016-05-16 20:13:35
【问题描述】:

当我点击提交按钮时,它给出了一个错误令牌不匹配,我不明白为什么它给我这个错误

这是我的失败

Route::get('admin-login', array('uses' => 'adminController@showlogin'));
// route to process the form
Route::post('admin-login', array('uses' => 'adminController@dologin'));

我的控制器

public function dologin(){
        $uname = Input::get('username');
        $password = Input::get('password');
        if (Auth::attempt(array('username' => $uname, 'password' => $password))){
            return "success";
        }
        else {
            return "Wrong Credentials";
        }
    }

我的表格

<form role="form" method="post" action="">
                        <input name="_token" hidden value="{{ csrf_token() }}  " />
                        <div class="form-group">
                            <label for="username">UserName: </label>
                            <input type="text" class="form-control" id="username" name="username">
                        </div>

                        <div class="form-group">
                            <label for="password">Password: </label>
                            <input type="password" class="form-control" id="password" name="password">
                        </div>

                        <button type="submit" class="btn btn-primary">Login</button>
                    </form>

这里有错误

TokenMismatchException in VerifyCsrfToken.php line 53:

【问题讨论】:

  • 在showlogin方法中我只是返回表单
  • 确保您的 CSRF 令牌正在发送,并且您的会话正常工作。此错误是由 CSRF 令牌未发送或与会话中的内容不匹配引起的。
  • 我的表中没有任何令牌字段这是错误吗?
  • 令牌字段没有保存到数据库中。
  • 这也有效:{!!形式::token() !!}

标签: php mysql laravel


【解决方案1】:

请在您的&lt;form&gt; 中添加{!! csrf_field() !!}

<form role="form" method="post" action="">
    {!! csrf_field() !!}
    <div class="form-group">
        <label for="username">UserName: </label>
        <input type="text" class="form-control" id="username" name="username">
    </div>

    <div class="form-group">
        <label for="password">Password: </label>
        <input type="password" class="form-control" id="password" name="password">
    </div>

    <button type="submit" class="btn btn-primary">Login</button>
</form>

不要使用Input 门面。最好像这样传递$request 对象:

public function dologin(Request $request)
{
    $uname = $request->username;
    $password = $request->password;
    if (Auth::attempt(array('username' => $uname, 'password' => $password))){
        return "success";
    }
    else {
        return "Wrong Credentials";
    }
}

请记住将use Illuminate\Http\Request; 放在班级的首位。

【讨论】:

  • 然后它给了我一个错误表单façade not found
  • Facade not found 错误可能来自您的doLogin 方法。请在您的班级顶部插入use Auth; - 但这与您的原始问题无关!
  • 现在它给了我一个错误 Input not found App/http/controllers/Input not found
  • 像这样????使用 Illuminate\Support\Facades\Input;
  • 我更新了我的答案 - 不要使用 Input 门面。
猜你喜欢
  • 1970-01-01
  • 2021-08-13
  • 1970-01-01
  • 1970-01-01
  • 2019-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多