下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、使用cucumber+rspec玩轉(zhuǎn)bdd(4)用戶登錄并“記住我”溫故知新 在上一篇文章中,我們參照文章內(nèi)容完成了用戶登錄功能的開(kāi)發(fā)工作。此時(shí),注冊(cè)用戶可以順當(dāng)?shù)卿浾军c(diǎn),查看用戶資料等等;但這一狀態(tài)也只限于當(dāng)前的掃瞄器窗口,假如掃瞄器關(guān)閉了,用戶重新打開(kāi)掃瞄器下次拜訪的時(shí)候,還是需要來(lái)到登錄頁(yè)面舉行重新登錄。若不是做交易支付型站點(diǎn),為了追求好一點(diǎn)的用戶體驗(yàn),我們可以給用戶預(yù)留一個(gè)可選項(xiàng);用戶在登錄的時(shí)候可以勾選 記住我 ,一段時(shí)光內(nèi)用戶將不必重新登錄。要實(shí)現(xiàn)用戶的這種持久登錄狀態(tài),我們應(yīng)當(dāng)怎么做呢?不妨來(lái)了解我們接下來(lái)的活兒。 為了獲得更好的閱讀體驗(yàn),讀者伴侶們可以在這里下載源碼: 新建工作
2、分支 $ git checkout -b remember_me 在有效時(shí)光內(nèi),要保持用戶的在線狀態(tài)。那么第一個(gè)問(wèn)題會(huì)是,我們得知道用戶是否已經(jīng)登錄呢?根據(jù)我們之前的預(yù)期,比如用戶的資料應(yīng)當(dāng)是受庇護(hù)的,惟獨(dú)當(dāng)用戶登錄以后才可以查看;那就有須要在程序上做一些拜訪控制。 實(shí)現(xiàn)容易的拜訪控制 用法 rai的 before_filter 鉤子辦法可以十分便利地實(shí)現(xiàn)我們的目的。 $ git app/controllers/users_controller.rb 在 usercontroller 類中的任何辦法之前加上如下一段代碼: before_filter :login_required, :only
3、 = :show 這樣在查看用戶資料的時(shí)候會(huì)檢查用戶是否已經(jīng)登錄,假如未登錄會(huì)提供一張登錄取的表單,假如已經(jīng)登錄了就會(huì)展現(xiàn)用戶資料。 我們繼續(xù)秉承測(cè)試先行這一理念,從編寫 用戶登錄且勾選記住我 的故事開(kāi)頭。 用戶登錄之 記住我 $ gedit features/user_login.feature 在文件尾部續(xù)添如下文本: 場(chǎng)景: 用戶已激活帳號(hào)且用法有效身份登錄并勾選記住我 如果 我已經(jīng)用法 404/xuliicom 注冊(cè)過(guò)且已經(jīng)激活了帳號(hào) 當(dāng) 我以 xuliicom 這個(gè)身份登錄并勾選 記住我 那么 我應(yīng)當(dāng)看到 登錄勝利 的提醒信息 而且 我應(yīng)當(dāng)勝利登錄網(wǎng)站 當(dāng) 我關(guān)閉網(wǎng)頁(yè)下次再來(lái)拜訪的時(shí)
4、候 那么 我應(yīng)當(dāng)依舊保持登錄狀態(tài) 運(yùn)行測(cè)試, $ ruby script/cucumber -l zh-cn features/user_login.feature 測(cè)試失敗,按照提醒信息來(lái)看,我們需要添加一些故事情節(jié)運(yùn)行所需的測(cè)試腳本。 添加用戶驅(qū)動(dòng)故事運(yùn)行的測(cè)試腳本 $ gedit features/step_definitions/user_steps.rb 續(xù)添如下腳本: when /我關(guān)閉網(wǎng)頁(yè)下次再來(lái)拜訪的時(shí)候$/ do 當(dāng) %session已經(jīng)被清除 而且 %我來(lái)到用戶登錄頁(yè)面 end when /session已經(jīng)被清除$/ do request.should be_nil en
5、d then /我應(yīng)當(dāng)依舊保持登錄狀態(tài)$/ do 很圓滿,在測(cè)試代碼中,cookies里邊放符號(hào)索引會(huì)返回nil對(duì)象 用字符串來(lái)索引沒(méi)問(wèn)題 更多信息可以查閱 /ticket/5924 cookiesremember_token.should_not be_blank request.session:user_id.should_not be_nil end 修改 when /我以 (.+)/(.+) 這個(gè)身份登錄$/ do . end 這段代碼如下: when /我以 (.+)/(.+) 這個(gè)身份登錄(并勾選 記住我 )?$/ do |user
6、name_or_email, password, remember| 當(dāng) %我來(lái)到用戶登錄頁(yè)面 而且 %我在輸入框 用戶名或郵箱 中輸入 username_or_email 而且 %我在輸入框 密碼 中輸入 password 而且 %我勾選 記住我 if remember 而且 %我按下 登錄 按鈕 end 為 當(dāng) 我勾選 記住我 添加對(duì)應(yīng)的運(yùn)行腳本, when /我勾選 (.+) $/ do |field| check(field) end 保存 user_steps.rb。運(yùn)行測(cè)試, $ ruby script/cucumber -l zh-cn features/user_login.f
7、eature 觀測(cè)試了解工作內(nèi)容 測(cè)試結(jié)果返回 could not field: 記住我 (webrat:notfounderror) 的相關(guān)信息,提醒沒(méi)有找到關(guān)于 記住我 的這個(gè)表單域,不用多想,這個(gè) 記住我 的多選框應(yīng)當(dāng)浮現(xiàn)在用戶登錄頁(yè)面。 $ gedit app/views/sessions/new.html.erb 修改后的登錄頁(yè)面代碼如下, % fo_tag sessions_path do % p %= label_tag username_or_email, 用戶名或郵箱 % br / %= tt_field_tag username_or_email % /p p %= lab
8、el_tag password, 密碼 % br / %= password_field_tag password % /p p %= check_box_tag remember_me, 1, true % %= label_tag remember_me, 記住我 % /p p %= bmit_tag 登錄 % /p % end % 保存 app/views/sessions/new.html.erb。運(yùn)行測(cè)試, $ ruby script/cucumber -l zh-cn features/user_login.feature 問(wèn)題出在 user_steps.rb 文件的第86行,我們
9、來(lái)看看這行代碼的內(nèi)容, 測(cè)試代碼里邊寫明白,假如用戶關(guān)閉網(wǎng)頁(yè)再次拜訪的時(shí)候,cookies:remember_token的值應(yīng)當(dāng)不為空,這樣就可以實(shí)現(xiàn)記住我的功能。測(cè)試結(jié)果告知我們?cè)撝禐榭?,為了達(dá)到我們想要的效果,我們來(lái)做些實(shí)際的編碼工作。 之前在用戶登錄頁(yè)面的模板文件中,我們已經(jīng)添加了供用戶可選 記住我 的選項(xiàng),下面添加一些處理業(yè)務(wù)流程的代碼。 $ gedit app/controllers/sessions_controller.rb 修改 create 辦法,在 sign_user_in(user)之前添加如下一句代碼, remember(user) if remember? 這樣用戶在勾選 記住我 選項(xiàng)之后,系統(tǒng)會(huì)自動(dòng)設(shè)置記住用戶的相關(guān)詳情,不過(guò)這些詳細(xì)詳情還需要我們通過(guò)編碼來(lái)完成。 繼續(xù)在 sessionscontroller 中編寫剛才那段代碼中用到的兩個(gè)辦法, private def remember? params:remember_me params:remember_me = 1
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度個(gè)人房屋抵押民間借貸借款協(xié)議文本3篇
- 2025年度平板車租賃運(yùn)輸合同風(fēng)險(xiǎn)評(píng)估與控制
- 個(gè)人租房合同標(biāo)準(zhǔn)版可打印
- 二零二五年度處理男子外遇妻子懷孕離婚撫養(yǎng)權(quán)糾紛調(diào)解合同
- 二零二五年度智慧家居項(xiàng)目報(bào)建代理與智能家居合同2篇
- 2025年度鐵礦石進(jìn)出口關(guān)稅及稅費(fèi)繳納合同規(guī)范
- 二零二五版礦產(chǎn)資源租賃居間代理合同3篇
- 二零二五年度企事業(yè)單位廉潔從業(yè)監(jiān)督員聘任合同
- 2025阿里巴巴智能物流機(jī)器人研發(fā)及銷售合同3篇
- 2025年度供應(yīng)鏈金融投資擔(dān)保協(xié)議
- 《大學(xué)生職業(yè)發(fā)展與就業(yè)指導(dǎo)》課程標(biāo)準(zhǔn)
- 第23課《出師表》課件(共56張)
- GB/T 3953-2024電工圓銅線
- 發(fā)電機(jī)停電故障應(yīng)急預(yù)案
- 接電的施工方案
- 常用藥物作用及副作用課件
- 幼兒阿拉伯?dāng)?shù)字描紅(0-100)打印版
- 社會(huì)組織等級(jí)評(píng)估報(bào)告模板
- GB/T 12173-2008礦用一般型電氣設(shè)備
- 新媒體研究方法教學(xué)ppt課件(完整版)
- 2020新版?zhèn)€人征信報(bào)告模板
評(píng)論
0/150
提交評(píng)論