日本一区二区免费播放_麻豆导航_久久精品99_国产性av_色婷婷噜噜久久国产精品12p_av福利资源_精品综合久久

當前位置:首頁 > 網(wǎng)站舊欄目 > 學習園地 > 設計軟件教程 > 每天一劑Rails良藥之Authentication

每天一劑Rails良藥之Authentication
2010-01-14 07:03:49  作者:  來源:
今天我們來看看Rails怎么處理登錄認證
雖然Rails有很多登錄認證的插件,但是我們可以自己動手豐衣足食

1,db/migrate/001_add_user_table.rb
Java代碼 復制代碼
  1. class AddUserTable < ActiveRecord::Migration   
  2.   def self.up   
  3.     create_table :users do |t|   
  4.       t.column :username, :string   
  5.       t.column :password_salt, :string   
  6.       t.column :password_hash, :string   
  7.     end   
  8.   end   
  9.   
  10.   def self.down   
  11.     drop_table :users   
  12.   end   
  13. end  


2,app/models/user.rb
Java代碼 復制代碼
  1. class User < ActiveRecord::Base   
  2.   validates_uniqueness_of :username   
  3.   
  4.   def password=(pass)   
  5.     salt = [Array.new(6){rand(256).chr}.join].pack("m").chomp   
  6.     self.password_salt, self.password_hash = salt, Digest::SHA256.hexdigest(pass + salt)   
  7.   end   
  8.   
  9.   def self.authenticate(username, password)   
  10.     user = User.find(:first, :conditions => ['username = ?', username])   
  11.     if user.blank? || Digest::SHA256.hexdigest(password + user.password_salt) != user.password_hash   
  12.       raise "Username or password invalid"  
  13.     end   
  14.     user   
  15.   end   
  16. end  


3,app/controllers/admin_controller.rb
Java代碼 復制代碼
  1. class AdminController < ApplicationController   
  2.   before_filter :check_authentication, :except => [:signin_form, :signin]   
  3.   
  4.   def check_authentication   
  5.     unless session[:user]   
  6.       session[:intended_action] = action_name   
  7.       redirect_to :action => :signin_form   
  8.     end   
  9.   end   
  10.   
  11.   def signin   
  12.     session[:user] = User.authenticate(params[:username], params[:password]).id   
  13.     redirect_to :action => session[:intended_action]   
  14.   end   
  15.   
  16.   def signout   
  17.     session[:user] = nil   
  18.     redirect_to home_url   
  19.   end   
  20.   
  21. end  


4,app/views/sign_form.rhtml
Java代碼 復制代碼
  1. <html>   
  2.   <head>   
  3.     <title>Signin for Admin Access</title>   
  4.   </head>   
  5.   <body>   
  6.     <%= start_form_tag :action => "signin" %>   
  7.       <label for="username">Username:</label>   
  8.       <%= text_field_tag "username" %><br/>   
  9.       <label for="password">Password:</label>   
  10.       <%= text_field_tag "password" %><br/>   
  11.       <%= submit_tag "Sign in" %>   
  12.     <%= end_form_tag %>   
  13.   </body>   
  14. </html>  

我們也可以將check_authentication方法放到application.rb里面,供其他Controllers使用

安徽新華電腦學校專業(yè)職業(yè)規(guī)劃師為你提供更多幫助【在線咨詢
主站蜘蛛池模板: 天天操夜夜草 | 天天操天天摸天天舔 | 亚洲va国产日韩欧美精品色婷婷 | 青青青青久久精品国产一百度 | 久久99久久成人免费播放 | 99视频精品免费99在线 | 欧洲专区| 人人爱人人舔 | 中文字幕在线不卡视频 | 欧美午夜影院 | 国产日韩欧美自拍 | 深夜在线视频免费网址 | 久草免费福利 | 国产精品久久久久999 | a级片免费在线观看 | 蜜桃臀久久伊人福利 | 国产欧美一区二区精品性色 | 久久亚洲精品中文字幕二区 | 午夜大片男女免费观看爽爽爽尤物 | 久久97精品久久久久久清纯 | 黄色亚洲 | 99热这里只有精品在线观看 | 六月婷婷激情综合 | a视频在线观看 | 青青操视频在线 | 免费看毛片网 | 亚洲三级中文字幕 | 精品一卡2卡三卡四卡二卡 精品一卡二卡三卡 | 欧美大片一区 | 日本 免费 高清 | 鲁大师在线播放视频 | 美女被免费网站在线视 | aa免费视频 | 国产成人91高清精品免费 | 蜜桃视频免费观看入口大全 | 日本不卡一二三 | 久久精品免视看国产陈冠希 | 国产精品高清在线观看地址 | 中文字幕在线亚洲 | 特黄特色的免费大片看看 | 热热影院 |