gpt4 book ai didi

laravel - 如何使用表列上存在的散列值验证请求?

转载 作者:行者123 更新时间:2023-12-05 08:41:16 25 4
gpt4 key购买 nike

我的表中有散列用户名。我如何将此验证方法用于散列值:

'name' => 'required|unique:users'

用户名请求示例:John

表中存在的用户名示例:RndqMUU5ZUJnQ2JhWjZvNUh5ZGp2UT09

我想首先我必须对来自请求的输入值进行哈希处理,然后验证是否正确?我在哪里可以散列和验证这些值?

最佳答案

您可以使用 Hash facadecheck 方法, 来自 docs :

use Illuminate\Support\Facades\Hash;

// some code

if (Hash::check('plain-text', $hashedElement)) {
// The elements match...
}

现在,您可以在 Custom Validation Rule 中使用它:

1。创建规则类

php artisan make:rule HashedNameCheck

2。自定义类

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.';
}
}

3。应用规则。

在你的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com