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

 

一、建立View/login

在View/login下建立login.html.erb、index.html.erb、loginFail.html.erb

login.html.erb代碼如下:

<h1>Welcome to login!</h1><br /><% form_tag do %><br /> <table><br /> <tr><br /> <td>User name:</td><br /> <td><%= text_field("user", "username") %></td><br /> </tr><br /> <tr><br /> <td>Password:</td><br /> <td><%= password_field("user", "hashed_password") %></td><br /> </tr><br /> <tr><br /> <td></td><br /> <td><input type="submit" value=" login " /> <input type="reset" value=" reset " /></td><br /> </tr><br /> </table><br /><% end %></p><p>

 

index.html.erb代碼如下:

<h1>Choose a page to look!</h1><br /><p><%= link_to 'Users', :controller=>"users",:action=>"index" %></p><br /><p><%= link_to 'Products', :controller=>"products",:action=>"index"%></p><br /><p><%= link_to 'Logout', :action=>"login"%></p>

loginFail.html.erb

<h1>Invalid user/password combination</h1><br /><%form_tag do%><br /> <%= link_to 'Back', :action=>"login" %><br /><%end%>

 

二、建立login_contoller.rb

代碼如下:

class LoginController < ApplicationController<br /> def login<br /> if request.get?<br /> session[:user_id] = nil<br /> @user = User.new<br /> else<br /> @user = User.new(params[:user])<br /> logged_in_user = @user.try_to_login</p><p> if logged_in_user<br /> session[:user_id] = logged_in_user.id<br /> redirect_to(:action => "index")<br /> else<br /> # flash[:notice] = "Invalid user/password combination"<br /> redirect_to(:action => "loginFail")<br /> end<br /> end<br /> end</p><p> def loginFail</p><p> end<br /> #清空登入資訊<br /> def reset<br /> params[:user]["username"]=null<br /> params[:user]["hashed_password"]=null<br /> end<br />end<br />

 

三、修改user.rb

添加登入資訊驗證內容

def self.login(username, hashed_password)<br /> password = hash_password(hashed_password || "")<br /> find(:first,<br /> :conditions => ["username = ? and password = ?",username, password])<br /> end</p><p> def try_to_login<br /> User.login(self.username, self.hashed_password)<br /> end

 

四、修改routes.rb

添加login映射規則

map.connect '/login/login',:controller=>"login",:action=>"login"

 

五、修改view/user/index.html.erb及view/product/index.html.erb

添加如下連結

<%= link_to 'Logout', :controller=>"login",:action=>"login" %>
<%= link_to 'Back to List', :controller=>"login",:action=>"index" %>

 

示範效果:

 

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.