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,也可以手動建立

 

二、建立Controller和View

Ruby項目—>右鍵—>Create Model

完成後將自動產生相應的檔案

 

三、修改Model user.rb

利用Digest/SHA1對密碼進行加密,實現加密儲存

修改後代碼如下:

require "digest/sha1"</p><p>class User < ActiveRecord::Base<br /> attr_accessor :hashed_password,:repassword<br /> attr_accessible :username, :hashed_password, :repassword<br /> validates_uniqueness_of :username<br /> validates_presence_of :username, :hashed_password</p><p> def before_create<br /> self.password = User.hash_password(self.hashed_password)<br /> end</p><p> def after_create<br /> @hashed_password = nil<br /> end</p><p> def before_update<br /> self.password = User.hash_password(self.hashed_password)<br /> end</p><p> def after_update<br /> @hashed_password = nil<br /> end</p><p>private</p><p> def self.hash_password(hashed_password)<br /> Digest::SHA1.hexdigest(hashed_password)<br /> end</p><p>end

 

四、修改users_controller.rb

修改update方法,實現當進行edit操作時先判斷password與 password_confirm是否一致,

如果一致,則進行update操作,否則提示使用者password 與 password_confirm 輸入不一致

修改後代碼如下:

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

 

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

對password欄位的顯示做修改

edit.html.erb修改後代碼如下:

<h1>Editing user</h1></p><p><% form_for(@user) do |f| %><br /> <%= f.error_messages %></p><p> <p><br /> <%= f.label :username %><br /><br /> <%= f.text_field :username %><br /> </p><br /> <p><br /> <%= f.label :password %><br /><br /> <%= f.password_field :hashed_password %><br /> </p></p><p> <p><br /> <%= f.label :password_confirm %><br /><br /> <%= f.password_field :repassword %><br /> </p><br /> <p><br /> <%= f.submit 'Update' %><br /> </p><br /><% end %></p><p><%= link_to 'Show', @user %> |<br /><%= link_to 'Back', users_path %>

 

show.html.erb修改後代碼如下:

<p><br /> <b>Username:</b><br /> <%=h @user.username %><br /></p></p><p><p><br /> <b>Password:</b><br /> <%=h @user.hashed_password %><br /></p></p><p><%= link_to 'Edit', edit_user_path(@user) %> |<br /><%= link_to 'Back', users_path %>

 

六、修改routes.rb

添下如下映射規則

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

 

示範效果:

Create User:

 

 

 

Update User:

 

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.