禁用特定用户的密码散列

Disable password hashing for particular users

我们为管理员和普通用户使用一个 table。我们需要以哈希格式保存管理员密码,但以明文形式保存用户密码。如何使用 CakePHP 3.0 做到这一点

已编辑: 用户的用户名和密码在另一个网站上用作登录凭据 API。所以我需要在没有 cakephp 3.0 哈希方法的情况下保存密码

您需要使用beforeSave方法。

// 在模型中

function beforeSave()
{
    // put the conditions here

return true;
}

正如在评论中多次向您指出的那样,您永远不应将密码以纯文本形式存储在数据库中。这与您的应用程序是否直接使用它们无关。正如 Anthony 在他对您的问题的评论中提到的,您应该考虑存储可以被您的应用程序逆转的加密密码。

您还应检查您使用的 API 是否提供更安全的使用访问令牌登录的方法。

尽管如此,如果你想坚持存储纯文本密码,那么你应该考虑将它们存储在一个单独的列中,而不是你的哈希密码。例如:-

id | username | password | api_login_password

混合使用 password 列不是一个好主意,让一些记录带有加密密码,而另一些则没有。

使用这样的架构,您将不需要对 api_login_password 进行哈希处理,而是继续对应用程序的密码进行哈希处理。据推测,您已将 CakePHP 设置为对用户实体的密码进行哈希处理,这不会影响 api_login_password 列。