首页 > 编程语言 >RUBY实践—带密码加密的用户创建及修改

RUBY实践—带密码加密的用户创建及修改

时间:2023-07-24 14:02:21浏览次数:33  
标签:加密 format hashed 密码 user end password RUBY User


开发环境

Ruby: Ruby1.9.1

Rails: Rails2.3.5

Mysql:Mysql5.0.9

Driver:mysql-2.8.1-x86-mingw32.gem

IDE:Rubymine2.0.1

 

一、创建数据表Users

利用RubyMine自带的Scaffold工具创建数据表Users,也可以手动创建

 

RUBY实践—带密码加密的用户创建及修改_activerecord

二、创建Controller和View

Ruby项目—>右键—>Create Model

完成后将自动生成相应的文件

 

三、修改Model user.rb

利用Digest/SHA1对密码进行加密,实现加密保存

修改后代码如下:

require "digest/sha1"

class User < ActiveRecord::Base
  attr_accessor :hashed_password,:repassword
  attr_accessible :username, :hashed_password, :repassword
  validates_uniqueness_of :username
  validates_presence_of :username, :hashed_password

  def before_create
    self.password = User.hash_password(self.hashed_password)
  end

  def after_create
    @hashed_password = nil
  end

  def before_update
     self.password = User.hash_password(self.hashed_password)
  end

  def after_update
     @hashed_password = nil
  end

private

  def self.hash_password(hashed_password)
    Digest::SHA1.hexdigest(hashed_password)
  end

end

 

四、修改users_controller.rb

修改update方法,实现当进行edit操作时先判断password与 password_confirm是否一致,

如果一致,则进行update操作,否则提示用户password 与 password_confirm 输入不一致

修改后代码如下:

def update
    @user = User.find(params[:id])
    respond_to do |format|
      print "user: #{params[:user]}"
      if params[:user]["hashed_password"] == params[:user]["repassword"]
          if @user.update_attributes(params[:user])
            flash[:notice] = 'User was successfully updated.'
            format.html { redirect_to(@user) }
            format.xml  { head :ok }
          else
            format.html { render :action => "edit" }
            format.xml  { render :xml => @user.errors, :status => :unprocessable_entity }
          end
      else
          flash[:notice] = 'Password and Password confirm are not the same'
          format.html { render :action => "edit" }
          format.xml  { render :xml => @user.errors, :status => :unprocessable_entity }
      end
    end
  end

 

五、修改users/edit.html.erb及users/show.html.erb

对password字段的显示做修改

edit.html.erb修改后代码如下:

<h1>Editing user</h1>

<% form_for(@user) do |f| %>
  <%= f.error_messages %>

  <p>
    <%= f.label :username %><br />
    <%= f.text_field :username %>
  </p>
  <p>
    <%= f.label :password %><br />
    <%= f.password_field :hashed_password %>
  </p>

    <p>
    <%= f.label :password_confirm %><br />
    <%= f.password_field :repassword %>
  </p>
  <p>
    <%= f.submit 'Update' %>
  </p>
<% end %>

<%= link_to 'Show', @user %> |
<%= link_to 'Back', users_path %>

 

show.html.erb修改后代码如下:

<p>
  <b>Username:</b>
  <%=h @user.username %>
</p>

<p>
  <b>Password:</b>
  <%=h @user.hashed_password %>
</p>


<%= link_to 'Edit', edit_user_path(@user) %> |
<%= link_to 'Back', users_path %>

 

六、修改routes.rb

添下如下映射规则

map.connect '/users',:controller=>"user",:action=>"index"

 

演示效果:

Create User:


Update User:


 

标签:加密,format,hashed,密码,user,end,password,RUBY,User
From: https://blog.51cto.com/u_16129500/6834639

相关文章

  • Ruby实践—HelloWorld
    开发环境OS:WindowsXPRuby:Ruby1.9.1Rails:Rails2.3.5IDE:RubyMine2.0.1 1、创建Rails工程 2、修改/config/database.yml自动创建的工程中默认数据库连接的是sqlite,如果没有安装此数据库,需要修改该配置(本例中使用的是mysql)#MysqlVersion5.1.46development:adapter:mys......
  • Ruby实践—连接Mysql
    安装环境:OS:WindowsXPRuby:Ruby1.9.1Mysql:Mysql5.1.46(username/password:root/root port:3306)Ruby-MysqlDriver:mysql-2.8.1-x86-mswin32.gem(注:用2.7.3版本的驱动在测试时会出现require"mysql",找不到指定模块IDE:RubyMine2.0.1 安装Ruby,RubyMine,Mysql的事项在这里就不......
  • RUBY实践—数据库简单操作
    开发环境:Ruby:1.9.1Rails:2.3.5Rake:0.8.7Rack:1.0.1Mysql:5.0.9Ruby-mysql:mysql-2.8.1-x86-mswinIDE:RubyMine2.0.1 数据库准备:database:dbdevelopmentuser:crystalpassword:crystal 一、创建Ruby项目RorTest 二、修改database.yml这里只启用development环境数据库,修改配置文......
  • Ubantu下安装mysql8.0密码重置
    ubantu下安装mysql8.0使用推荐的aptitude来安装,省心省力。sudoaptitudeinstallmysql-server无脑“Y“安装成功。sudomysql-uroot-p会让你输入密码,密码???什么密码,什么时候有密码了。这种方式安装的貌似没有给设置密码的机会。所以需要重新设置。首先编辑sudovim/etc......
  • Ruby中使用shell变量
    在Ruby中使用shell变量1.流程概述下面是使用shell变量的整个流程的步骤概述:步骤描述步骤1在Ruby中获取shell变量的值步骤2在Ruby中设置shell变量的值接下来,我们将逐步介绍每个步骤所需执行的操作。2.步骤1:获取shell变量的值要在Ruby中获取shell变量的值,我......
  • 加密文件
    有时候我们希望将文件加密传输给前端。最初我的思路是加密文件流,但研究了很久都没有得到结果。后来突然想到,数据库里不是有blob数据嘛,而blob就是一种二进制数据,那么SSM框架是怎么处理数据库里的blob数据传给前端的呢?于是我就使用mybatis-generator生存一个DTO对象,发现其中的blob......
  • Mysql手贱修改了User表下的配置,导致本地连接不上去了,或者忘记密码
    ①停止MySQL服务查看mysql服务状态:systemctlstatusmysqld停止mysql服务:systemctlstopmysqld②特殊命令启动mysql服务mysqld--skip-grant-tables& 该命令可以绕过user表,免密登录进入mysql③登录mysql服务器现在直接登录mysql,不用输入密码④修改user表的配置,或者创建......
  • 如何导出 1Password 密码库拷贝到另个1password账户
    导出目前登录名为1pass账户选择所有项目-》导出-》你的账号名导出格式选择1PUX会出现一个名为1PasswordExport-TCETPFBRCREDJF7UKOT3TY2BCE-20230723-133048.1pux文件导入目前登录名为2pass账户选择导入-》从文件选择刚刚生成的名为1PasswordExport-TCETPFBRCREDJF7UK......
  • python数据加密与解密方法
    #-*-encoding:utf-8-*-"""@File:加密与解密.py@Time:2023-07-2310:02@Author:simon@Email:[email protected]@Software:PyCharm"""fromhashlibimportmd5importbase64#MD5加密obj=md5()str="你是个小可爱......
  • Centos 7 单用户模式修改密码/配置
    1、启动系统,启动项界面显示时,按“↑↓”键停留在此界面,按下“e”键进入编辑模式2、利用“↑↓”键找到“linux16”开头的那段,去掉“rhgb”和“quiet”参数,并在“UTF-8”之后添加“init=/bin/sh”3、修改后,按“Ctrl+X”重启系统4、修改根目录的修改权限,并重新挂载(默认只读,不......