<source id="4vppl"><ins id="4vppl"></ins></source>
<u id="4vppl"><sub id="4vppl"><label id="4vppl"></label></sub></u>
<object id="4vppl"></object>
  • <u id="4vppl"><li id="4vppl"><label id="4vppl"></label></li></u>

    <object id="4vppl"></object>
    <b id="4vppl"><sub id="4vppl"><tr id="4vppl"></tr></sub></b>

      <i id="4vppl"><thead id="4vppl"></thead></i>

      <thead id="4vppl"><li id="4vppl"><label id="4vppl"></label></li></thead>

      當(dāng)前位置:首頁(yè) > 網(wǎng)站舊欄目 > 學(xué)習(xí)園地 > 設(shè)計(jì)軟件教程 > 每天一劑Rails良藥之Keep An Eye On Your Session Expiry

      每天一劑Rails良藥之Keep An Eye On Your Session Expiry
      2010-01-14 07:05:17  作者:  來(lái)源:
      Rails的session默認(rèn)為當(dāng)用戶關(guān)閉瀏覽器時(shí)終止
      我們可以在config/environment.rb里設(shè)置它:
      Java代碼 復(fù)制代碼
      1. CGI::Session.expire_after 1.month  

      這需要一個(gè)插件,具體session設(shè)置請(qǐng)參考http://wiki.rubyonrails.org/rails/pages/HowtoChangeSessionOptions
      這不是今天我們討論的重點(diǎn)

      出于安全問(wèn)題,有時(shí)候我們需要通知用戶你的session快超時(shí)了,如在線銀行系統(tǒng)等
      讓我們看看在Rails里怎樣做

      1,bank_account_controller.rb
      Java代碼 復(fù)制代碼
      1. class BankAccountController < ApplicationController   
      2.   before_filter :update_activity_time, :except => :session_expiry   
      3.   def update_activity_time   
      4.     session[:expires_at] = 1.minutes.from_now   
      5.   end   
      6.      
      7.   def session_expiry   
      8.     @time_left = (session[:expires_at] - Time.now).to_i   
      9.     unless @time_left > 0  
      10.       reset_session   
      11.       render '/signin/redirect'  
      12.     end   
      13.   end   
      14. end  

      該controller里定義了update_activity_time這個(gè)before_filter,它設(shè)置session的超時(shí)時(shí)間,這里為了demo我們?cè)O(shè)置為1分鐘

      2,bank_account/index.rhtml
      Java代碼 復(fù)制代碼
      1. <html>   
      2.     <head>   
      3.         <%= javascript_include_tag :defaults %>   
      4.     </head>   
      5.     <body>   
      6.         <div id='header'></div>   
      7.         <%= periodically_call_remote :url => {   
      8.                 :action => 'session_expiry'},   
      9.                 :frequency => 1,   
      10.                 :update => 'header' %>   
      11.         <div id='body'>Here's where your application's real functionality goes.</div>   
      12.     </body>   
      13. </html>  

      我們使用periodically_call_remote這個(gè)helper方法來(lái)每間隔1秒遠(yuǎn)程調(diào)用一次session_expiry這個(gè)action,并更新header這個(gè)div

      3,bank_account/session_expiry.rhtml
      Java代碼 復(fù)制代碼
      1. <span style='color: read; font-weight: bold'>   
      2.     Your session will expire in <%= @time_left %> seconds   
      3. </span>  

      這里顯示了我們的session還有多久會(huì)expire

      4,signin/redirect.rjs
      Java代碼 復(fù)制代碼
      1. page << "window.location = '#{signin_url}';"  

      我們?cè)趕ession超時(shí)的時(shí)候自動(dòng)redirect到signin_url(需要我們?cè)趓outes.rb里定義)

      安徽新華電腦學(xué)校專業(yè)職業(yè)規(guī)劃師為你提供更多幫助【在線咨詢
      国产午夜福三级在线播放_亚洲精品成a人片在线观看_亚洲自慰一区二区三区_久久棈精品久久久久久噜噜
      <source id="4vppl"><ins id="4vppl"></ins></source>
      <u id="4vppl"><sub id="4vppl"><label id="4vppl"></label></sub></u>
      <object id="4vppl"></object>
    1. <u id="4vppl"><li id="4vppl"><label id="4vppl"></label></li></u>

      <object id="4vppl"></object>
      <b id="4vppl"><sub id="4vppl"><tr id="4vppl"></tr></sub></b>

        <i id="4vppl"><thead id="4vppl"></thead></i>

        <thead id="4vppl"><li id="4vppl"><label id="4vppl"></label></li></thead>
        三级网站在线网站 | 在线观看最新Av不卡 | 一区二区三区精品视频 | 亚洲中亚洲中文字幕无线乱码 | 日韩一中文字幕在线 | 亚洲精品99久久久久中文字幕 |