Rails-icode9密码保护的基础知识
作者:互联网
什么叫身份认证?
实质上,身份认证是一种认证您是谁方式。我也经常搞混身份认证和受权:
身份认证是对消费者真实身份确认,而受权明确你们是否能够浏览特殊网络资源[1]。
期待二者的高效界定将帮助你不必像我一样搞混他们!让你的身份认证正常运转针对往后的受权至关重要,他们相互依存。
皱壁的基本知识
有关bycrpt怎样工作的重中之重定义就是它应用哈希和盐优化算法来加密密码以的保护。散列算法将纯文本登陆密码转换成一堆字母和数字。这么做的一个关键方面也是,它在通过哈希处理后没法变成纯文本。腌渍是哈希之上的附加层,可以为每一个登陆密码建立更与众不同的字母和数字错乱。散列和放盐每一个登陆密码的搭配可保证每一个加密密码都十分安全性。
三个关键流程
1)第一步是把bcrypt宝石导入到你的晶石文档中。
geminstallbcrypt
2)在你的用户表中,做为登陆密码列的关键词是“password_digest”。⭐留意:仅在这里应用“password_digest”,并在别的哪里都(包含您的前面!
//schema.rb
create_table"users",force::cascadedo|t|
t.string"first_name"
t.string"last_name"
t.string"username"
t.string"password_digest"
t.datetime"created_at",precision:6,null:false
t.datetime"updated_at",precision:6,null:false
end
3)在你的实体模型中,在大家的实例中,我们自己的用户模型包含宏“has_secure_password”。
classUserhas_secure_password
//therestofyourmodel
end
登录中的应用实例
进行那些流程后,大家可以为应用软件里的登录功能撰写如下所示具体内容:
classSessionsControllerskip_before_action:authorize,only::create
//forloginfeat
defcreate
user=User.find_by(username:params[:username])
ifuser&.authenticate(params[:password])
session[:user_id]=user.id
renderjson:user
else
renderjson:{errors:["Invalidusernameorpassword"]},status::unauthorized
end
end
end
结果
这也是维护你的登陆密码的三个步骤。希望这有利于清除你对加密密码的所有疑惑!假如你错过了,欢迎来到bcrypt的连接!