2016-01-08 91 views
1

好吧,这是非常初学者,但我想要一个解释。在下面的“postReset”方法中内置的Laravel密码重置中,它指定了“token”...但是,当使用{!! csrf_field()!!}在视图中,它会生成输入名称=“_ token”。在匹配名称时,_是否作为实际字符计数?只是混淆了数据库迁移如何使用“标记”,但csrf字段将输入名称设置为“_token”。Laravel密码重置令牌

public function postReset(Request $request) 
    { 
     $this->validate($request, [ 
      'token' => 'required', 
      'email' => 'required|email', 
      'password' => 'required|confirmed|min:6', 
     ]); 

     $credentials = $request->only(
      'email', 'password', 'password_confirmation', 'token' 
     ); 

     $response = Password::reset($credentials, function ($user, $password) { 
      $this->resetPassword($user, $password); 
     }); 

感谢,

+0

'_token'仅用于跨站点请求伪造,不用于重置密码,但您需要将'input'放入名为'token'的输入中,该名称将用于重置密码。 –

回答

1

你并不需要密码重置_token或迁移。但是,如果您使用post方法将任何输入发送到laravel,则这是绝对必要的。

Laravel可以轻松保护您的应用程序免受跨站点请求伪造(CSRF)攻击。跨站点请求伪造是一种恶意攻击,其中未经授权的命令是代表经过身份验证的用户执行的。

Source

我怎么能包括在我的形式CSRF令牌?

可以通过让这个表单中包括CSRF令牌

<input type="hidden" name="_token" value="<?php echo csrf_token(); ?>"> 

提示:

您可以处理内部

app\Http\Middleware\VerifyCsrfToken.php 

的CSRF令牌过滤后的行动希望这可以帮助你。

相关问题