ios退出登錄并返回到登錄頁(包含token過期的處理方案)

最近寫的ionic2項目,需要處理隔天請求某些數(shù)據(jù)時,會提示非法請求,然后根據(jù)后端返回的error,退出登錄,并返回到登錄頁.

然后,步驟就是 調(diào)用退出登錄的接口,在成功的狀態(tài)里,接著清除在啟動頁記錄存儲用戶的信息("userid",token,sid)等信息.? 然后設(shè)置Login為root跟目錄 : ? ? ? ?this.nav.setRoot(LoginPage);

然后,突然想起來了之前ios寫的 ?登錄,退出 功能. ? 無非不也是這種思路呢.. 然后搜了下,ios退出登錄的實現(xiàn). ?一大堆問題,說各種 的都有,. 1. 說什么再次登錄成功后 進入的是設(shè)置界面(退出按鈕所在的頁面),?

2. ?有的說再次進去app的時候,沒有顯示登錄頁面,而是進的首頁.

其他的還有一大堆............


1. 我們先來分析下第一種 的情況: 退出成功了, 的確也回到登錄頁了.. ?那么你是如何回到登錄頁的? modal? dismiss? ? 這新手也很少會犯這樣的錯誤吧? 請你先搜搜push 和 Modal 到底是怎么用的.

2.第二種情況. 明明退出了,為何再次進去app的時候,沒有顯示登錄頁面,而是進的首頁.

首先,退出跳轉(zhuǎn)的代碼是怎么寫的?是不是寫在退出請求返回成功的代碼里? 沒有有設(shè)置tab select(0)選中第一個角標(biāo)?, 只有當(dāng)成功的時候,你再去跳轉(zhuǎn)到登錄頁啊. ?其次是你在登錄的時候,是不是做了保存密碼,自動登錄處理? ? 如果是的話,那你在退出的時候,是否清除了存儲的某些信息或設(shè)置? 如果你能把這兩點搞清楚,也就能避免第二種情況了.

然后說下比較嚴(yán)謹(jǐn)?shù)耐顺龅卿?返回登錄頁的步驟.

? ? ?加入這是一個退出登錄請求返回的block ?: ? outLogin(data){

? ? ? ? ? ? ?if(data.success ==1){//即請求成功.

? ? ? ? ? ? ?//1.先做清楚數(shù)據(jù)操作. 清楚你可能存儲的 自動登錄做保存的信息 或者某些設(shè)置

//2.做跳轉(zhuǎn)

UIWindow * window = [[[UIApplication ?sharedApplication]delegate]window];// 獲得根窗口

LoginViewController*loginVC?= [[LoginViewController ?alloc]init];//將登錄控制器設(shè)置為window的根控制器

UINavigationController * nav?=?[[UINavigationController ?alloc]initWithRootViewController: loginVC];

window.rootViewController=?nav;

?? ? ? ? ? ? ?}

? ? ? ?}

3.如果想做的更好一點,避免退出APP后再登錄時,防止再次跳轉(zhuǎn)設(shè)置界面。應(yīng)當(dāng)將設(shè)置控制器推出到根控制器popToRootViewControllerAnimated

在頁面將要消失的代碼里面寫

- (void)viewWillDisappear:(BOOL)animated {

? ? [superviewWillDisappear:animated];

? ?[self.navigationControllerpopToRootViewControllerAnimated:YES];

? ?NSMutableArray*vcs?=?[self.navigationController.viewControllers ?mutableCopy];

? ?[vcs ?removeAllObjects]; ? ??

//還有 可以順便了解下 ViewController的生命周期? 看看push 和pop? 的時候 哪些Controller是銷毀的 哪些是存在的

}

4.順便再說下保存密碼,自動登錄時候 token過期的處理

如果設(shè)置可自動登錄項,那么當(dāng)你自動登錄如果遇到token過期的情況沒處理的話,那就是直接進到app (因為默認(rèn)會請求首頁的數(shù)據(jù),此時你傳遞過去的是錯誤的token), 并且顯示非法請求等等(反正就是拿到錯誤的token,請求數(shù)據(jù)時, 后臺會返給你error)

現(xiàn)在有兩種解決方案, 當(dāng)?shù)卿浀臅r候首先會做請求,如果拿到的error等于token錯誤的,

1. 自動退回到登錄頁, 讓用戶從新登錄.

2.直接在此處 觸發(fā)登錄請求, 拿到登錄成功后返回的最新token. ?這時候再進入首頁自動請求數(shù)據(jù)就避免了 非法請求的情況.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • iOS網(wǎng)絡(luò)架構(gòu)討論梳理整理中。。。 其實如果沒有APIManager這一層是沒法使用delegate的,畢竟多個單...
    yhtang閱讀 5,490評論 1 23
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,554評論 19 139
  • 星期三/多云 談起多年來看小說的經(jīng)驗真真是停不下來。自小學(xué)五年級看韓國言情小說開始,除了高三時強制自己一年沒碰小說...
    酒久里個丸子閱讀 219評論 0 0
  • 紅樓之黛玉為妻,作者雙面人。 某種馬男穿越者試圖去紅樓大展宏圖,圓后宮美夢??上Щ甏┲畷r被原主衛(wèi)若蘭打敗,給對方留...
    海水藍(lán)閱讀 1,210評論 0 0
  • 韓幣分為紙幣和硬幣兩種。 紙幣有1000韓元、5000韓元、10000韓元、50000韓元四種面值。 硬幣總共有1...
    簡單的親故閱讀 7,052評論 0 1

友情鏈接更多精彩內(nèi)容