刚开始做rails时,用户登录的帐号和密码都是以明文的形式直接存入数据库的。后来意识到,这样做是十分不安全的,就算是直接管理用户、管理数据库的人也不应直接看到用户的密码,而且在客户端和服务器传输用户信息的时候也不安全。所以就要给这个用户的密码加密。
rails框架本身就提供了一个加密的方式,在gemfile中提供了一个gem包:
# Use ActiveModel has_secure_password
gem 'bcrypt-ruby', '~> 3.1.2'
然后在终端中执行bundle install的命令,应该就可以使用了。但我在使用的过程中遇到了一个问题:
gemfile引好文件,安装好gem包后,在相应的user的model中加入:
class User < ActiveRecord::Base
has_secure_password
end
这时,has_secure_password有下划线,提示是undefined method,我的第一反映是gem没安装正确,用gem list查看却是安装成功了。
最后查看了rails使用的ruby版本是2.0.0,在gemfile中也写入了,而在rubymine的设置中ruby SDK and Gems 中设置的ruby版本却是RVM ruby—1.9.3-P448 。这就导致了虽然在rails工程中下载了相应的bundle,下载下来的gem却没有使用到工程中,修改rubymine的SDK设置后,下划线就消失了。
这时提供了的密码保护功能,默认用户的密码属性是password_digest,这是加密后的密码,在新增和修改用户密码时默认密码的两个关键key是password和password_confirmation,当这两个值相等的时候才会真正改变用户密码,否则框架中提供了自动的相应的报错信息。报错信息是英文的,需要几行代码来完成汉化。
在登录和查找用户密码的时候使用:
user.authenticate(params[:password])来验证密码。
还有就是给每个用户产生一个token,大多用的是md5的方式。
控制登录时输入的内容合法性(格式问题),使用:
validates :name, :presence => true, :uniqueness => {:case_sensitive => false}
validates :email, :presence => true, :uniqueness => {:case_sensitive => false}, :email_format => true
validates :password, :length => { :minimum => 6 }, :on => :create
如果上面某一项填写有误,会出现error,可以使用@user.error.any?来判断。
但是我觉得bootstrap中提供的表格css检查更好用一些。
分享到:
相关推荐
也可以使用 Rails 自带的 has_secure_password 来自已打造。下面就是尝试使用 has_secure_password 来实现用户注册和登录功能。 准备工作 创建项目: rails new user_login has_secure_password 中加密的功能需要...
has_secure_password 目标 我们将制作一个涵盖简单身份验证流程的Rails应用程序:用户可以创建帐户,登录和注销。 介绍 我们的应用程序包含三个页面: 一个注册页面,用户在其中输入其用户名(作为name ),密码和...
has_secure_password目标我们将制作一个涵盖简单身份验证流程的Rails应用程序:用户可以创建帐户,登录和注销。介绍我们的应用程序包含三个页面: 一个注册页面,用户在其中输入其用户名(作为name ),密码和密码...
它旨在与您已经在使用的auth系统配合使用,例如Devise,Sorcery和has_secure_password 。 您还可以将其与任何自定义身份验证系统一起使用。 只需将登录请求发送到身份验证端点,Tokenable将返回一个令牌。 然后,...
在用户模型中,使用`has_secure_password`方法来启用BCrypt密码验证: ```ruby class User has_secure_password end ``` 在视图(Views)中,创建注册和登录的HTML表单。使用ERB语法,将表单绑定到控制器的动作...
$ rails generate model user name:string email:string:uniq password_digest:string 然后,运行迁移以创建users表。 $ rails db:migrate 在User模型中添加以进行密码验证。 请参阅以配置API Guard身份验证以与...
#Rails 身份验证样板验证是乏味的。... 通过has_secure_password具有合理验证和 bcrypt 密码支持的用户模型##安装生成样板用户: $ rails g model User name username password_digest email根据需要复制和
在 User 模型中,你会看到类似 `has_secure_password` 的方法,它包含了验证和哈希密码的功能。 3. **控制器与路由**:接下来,创建一个 Sessions 控制器,用于处理登录相关的请求,如登录(create)和登出...
Rails 自带的 `has_secure_password` 方法可以用于处理密码的哈希和验证。 2. **控制器(Controller)**:登录过程涉及的控制器可能有`SessionsController`,负责处理登录请求、登出请求。例如,`create`动作处理...
指示创建User模型并使用属性进行迁移name , String 在本实验中,我们将使用has_secure_password来配置密码。 包含该内容将带来有关管理会话等的详细信息,这会使CanCanCan难以理解。 在实际的应用程序中,您需要...
敲 Rails API的无缝JWT身份验证 描述 Knock是基于JSON Web令牌的仅Rails API应用程序的身份验证解决方案。 我为什么要用这个? 轻巧。 它是为仅Rails API的应用程序量身定制的。... 建议使用has_secure_passwo
- 认证机制:介绍了如何使用Rails内置的`has_secure_password`模块来处理用户密码的存储与验证,以及如何利用`bcrypt`库进行密码哈希。 - 授权策略:讲解了如何使用`Pundit`或`CanCanCan`等库来实现基于角色的访问...
8. **Rails的安全实践**:包括CSRF(跨站请求伪造)、XSS(跨站脚本攻击)防御,以及如何正确使用has_secure_password进行用户认证。 9. **Rails社区和工具**:了解Rails社区的活跃度,使用如Gemfile和Bundler管理...
在`can-u-explain-what-this-code-does.pdf`文件中,可能详细解释了这段检查密码安全性的代码实现,包括如何创建禁止密码列表,如何在验证过程中使用这个列表,以及如何集成到Rails的认证流程中。阅读这份文档可以...
该服务应利用has_strong_password( has_secure_password? )用户功能,以及使用请求的IP地址和规则中的CIDR值来调用或实施规则实施。创建一个登录表单并设置用户会话在/ sign-up创建一个登录表单,以供用户提交...
身份验证(使用 bcrypt 和has_secure_password ) 用户账户管理 忘记/重置密码 100% 代码覆盖率 用什么? 数据库:PostgreSQL 测试:RSpec 意见:Erb 样式表:SCSS Javascript:咖啡脚本 启动新应用 将此 repo...
`has_secure_password`是`ActiveModel::SecurePassword`模块提供的方法,用于处理密码的哈希和验证。 7. **会话管理(Session Management)** Rails内置的会话存储机制用于在用户登录后跟踪其状态。登录成功后,用户...
拉尔斯游乐园目标熟悉... 有关要求输入密码的提示:ActiveRecord带有方便的has_secure_password属性,您可以在模型上设置该属性。 它要求您启用bcrypt gem,并向模型添加password_digest列。 您可以阅读更多有关。资源
Rails可以通过ActiveRecord的`has_secure_password`方法集成这一过程。 **Rails中的认证库** 虽然可以手动实现这些功能,但Rails社区提供了许多成熟的认证库,如Devise和Clearance。它们提供了一套完整的解决方案...