我试图了解角色密码应该如何在 Postgres 中运行。
https://www.postgresql.org/docs/current/static/sql-createrole.html表示 ENCRYPTED / UNENCRYPTED
如果提供的密码字符串已经是 MD5 加密格式,那么它会按原样加密存储,
所以我未加密的密码是: MyPassword 。
“MyPassword”的 MD5 哈希值为 48503dfd58720bd5ff35c102065a52d7
如果我做
-- See https://www.postgresql.org/docs/9.6/static/sql-alterrole.html
ALTER ROLE "MeOhMy"
LOGIN
PASSWORD '48503dfd58720bd5ff35c102065a52d7'
;
Run Code Online (Sandbox Code Playgroud)
然后在做的时候尝试使用“MyPassword”
sudo -u postgres psql meohmy -h 127.0.0.1 -d meohmy_development
Run Code Online (Sandbox Code Playgroud)
当然,我首先被提示输入我的 sudo 密码,然后我被 Postgres 提示“我的密码”
如果我输入 MyPassword 我得到
FATAL: password authentication failed for user "ralph@dos32.com"
Run Code Online (Sandbox Code Playgroud)
如果我输入 48503dfd58720bd5ff35c102065a52d7,则我可以登录。
我不明白什么?
我有两个实例变量:@var_from_new和@var_from_find_by。
@var_from_new是由
@var_from_new = EmailAddress.new
Run Code Online (Sandbox Code Playgroud)
@var_from_find_by是由
@var_from_find_by.find_by_email_address(email_address_params[:email_address])
Run Code Online (Sandbox Code Playgroud)
当我用调试器检查这两个变量时,两个实例变量都包含完全相同的内容。然而
@var_from_new.persisted? # false
@var_from_find_by.persisted # true
Run Code Online (Sandbox Code Playgroud)
Rails 怎么知道的?