对于旧密码是否有可用的laravel验证规则?

对于旧密码是否有可用的laravel验证规则?,laravel,laravel-5,Laravel,Laravel 5,是否有可用的验证规则,允许您比较数据库中的输入字段和列(如果它们匹配) 他们是否应该匹配用户id和会话以及输入的密码和数据库中的密码?您正在查找规则: 给定数据库表上必须存在验证中的字段 当我在寻找同样的答案时,偶然发现了这一点。这可能有点旧,但正如Christian在评论中提到的,Alexey的解决方案允许用户使用数据库中的任何现有密码(甚至其他用户的)作为当前密码。希望这个答案对某人有所帮助:) 因此,对于Laravel 5.2,以下解决方案适用于我: 这在Laravel5.3+中可能有所不

是否有可用的验证规则,允许您比较数据库中的输入字段和列(如果它们匹配)

他们是否应该匹配用户id和会话以及输入的密码和数据库中的密码?

您正在查找规则:

给定数据库表上必须存在验证中的字段


当我在寻找同样的答案时,偶然发现了这一点。这可能有点旧,但正如Christian在评论中提到的,Alexey的解决方案允许用户使用数据库中的任何现有密码(甚至其他用户的)作为当前密码。希望这个答案对某人有所帮助:)

因此,对于Laravel 5.2,以下解决方案适用于我:

这在Laravel5.3+中可能有所不同,因为有以下定制查询的验证。我还没有尝试过这个,但它对Laravel 5.2不起作用

use Illuminate\Validation\Rule;

Validator::make($data, [
    'email' => [
        'required',
        Rule::exists('staff')->where(function ($query) {
            $query->where('account_id', 1);
        }),
    ],
]);

我想要的是,如果它存在于其他表中,并且会话或id与idExists列匹配,那么这是一种很好的方法,在@Christian给出的关于比较旧密码和新密码的场景中,您会如何应用它?如果我有一个abc的旧密码,并且我登录到另一个帐户,那么我输入了一个旧密码,甚至没有验证它是否是我的帐户。如果我只使用了exist,那么即使我不拥有该帐户,其他帐户的密码也会更改,因为我的条件是如果它只存在,您不应该在数据库中存储明文密码,因此,您不能对密码使用任何类型的输入验证规则来将其与数据库中的密码进行比较。要比较新旧密码,请使用Hash::check($currentpassword,$password)
'old_password' => 'required|exists:users,password,usr_id,'.$user_id,
use Illuminate\Validation\Rule;

Validator::make($data, [
    'email' => [
        'required',
        Rule::exists('staff')->where(function ($query) {
            $query->where('account_id', 1);
        }),
    ],
]);