作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的表中有散列用户名。我如何将此验证方法用于散列值:
'name' => 'required|unique:users'
用户名请求示例:John
表中存在的用户名示例:RndqMUU5ZUJnQ2JhWjZvNUh5ZGp2UT09
我想首先我必须对来自请求的输入值进行哈希处理,然后验证是否正确?我在哪里可以散列和验证这些值?
最佳答案
您可以使用 Hash facade 的 check
方法, 来自 docs :
use Illuminate\Support\Facades\Hash;
// some code
if (Hash::check('plain-text', $hashedElement)) {
// The elements match...
}
现在,您可以在 Custom Validation Rule 中使用它:
php artisan make:rule HashedNameCheck
app\Rules\HashedNameCheck.php
<?php
namespace App\Rules;
use Illuminate\Contracts\Validation\Rule;
use Illuminate\Support\Facades\Hash; // <-- notice.
class HashedNameCheck implements Rule
{
/**
* Determine if the validation rule passes.
*
* @param string $attribute
* @param mixed $value
* @return bool
*/
public function passes($attribute, $value)
{
// here you get the hashed name stored in your database (?)
$hashedName = App\User::find(1)->name;
// next, you compare this with the received value.
return Hash::check($value, $hashedName);
}
/**
* Get the validation error message.
*
* @return string
*/
public function message()
{
return 'The :attribute does not match with the stored value.';
}
}
在你的 Controller 中使用它:
$request->validate([
// some other validation rules..
'name' => ['required', 'unique:users', new HashedNameCheck],
]);
或在您的自定义中 Form Request类:
public function rules()
{
return [
// some other validation rules..
'name' => ['required','unique:users', new HashedNameCheck],
];
}
关于laravel - 如何使用表列上存在的散列值验证请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51166948/
我是一名优秀的程序员,十分优秀!