開發環境
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" %>
示範效果: