摘要:執行操作前判斷用戶的登錄狀態,是則執行操作,否則先跳轉到登錄頁面,登錄成功后返回頁面,頁面繼續執行之前的操作。進入登錄頁時獲得的必須要記錄下來,才能在登錄成功后跳轉回之前的頁面。最后決定選擇保存要執行的方法。
問題
用戶進入頁面A,在頁面A上要執行一個操作X。操作X需要用戶登錄后才能訪問,因此系統引導用戶到登錄頁,用戶登錄后在讓用戶繼續執行操作X。
分析操作X存在兩種情況,1:跳轉到一個頁面B;2:執行一個操作。
進入頁面B的情況,要在頁面B的入口位置判斷是否用戶是否為登錄狀態,是則進入,否則進入登錄頁面,登錄成功后再進入頁面B。假設頁面A的URL是是url-a,頁面B的url是url-b,登錄頁面的url是url-l,那么瀏覽器的地址依次是url-a,url-b,url-l,url-b。因此,系統就是要解決登錄模版如何記錄url-b,并在成功后進入url-b。
執行一個操作的情況。執行操作前判斷用戶的登錄狀態,是則執行操作,否則先跳轉到登錄頁面,登錄成功后返回頁面A,頁面A繼續執行之前的操作。這時,登錄頁要記錄頁面A,登錄成功后返回A,頁面A要記錄用戶的操作和參數,從登錄頁返回后繼續執行。
實現 頁面跳轉頁面跳轉的情況,由頁面B負責判斷是否要跳轉到登錄頁,如果需要用redirect的方式完成。
header("Location: $loginURL"); exit;
在login頁面需要知道是從哪個頁面跳轉來,并保存,這樣登錄成功后再跳轉回原來的頁面。PHP中可以通過$_SERVER["HTTP_REFERER"]獲得是從哪個頁面進入的的登錄頁。
$referer = $_SERVER["HTTP_REFERER"];
進入登錄頁時獲得的$referer必須要記錄下來,才能在登錄成功后跳轉回之前的頁面。跨調用保存信息有4種方式:1、保存在session中;2、保存在cookie中;3、作為參數放在url中;4、生成頁面時,作為頁面的隱藏信息。
放在session中,只能通過php獲取,因此,登錄成功后跳轉回原頁面的操作只能在php中進行,這樣就不能實現通過一個ajax調用驗證用戶登錄信息后,在前端頁面直接跳轉指定頁面。
采用cookie的方式需要前后端共同確定一個約定,用什么代表頁面的跳轉信息,另外前端需要增加cookie的處理邏輯。這種方式可以同時支持前端或后端進行跳轉。
作為參數放在url中可以實現在前端進行跳轉,但是會導致url看起來有些怪異,同時還需要考慮url編碼的問題。
直接生成在登錄頁面中(利用頁面模版)作為前端參數,這種方式支持在前端進行跳轉,需要前后端約定參數的定義。
執行操作執行操作的情況應該是頁面A判斷用戶是否已經登錄,或者根據執行操作X的返回結果,由頁面A直接跳轉到登錄頁面,登錄界面記錄是從哪個頁面跳轉來的。
header("Location: $loginURL"); exit;
頁面A執行跳轉到登錄頁面前,首先記錄要執行的操作,例如:操作的名稱,這個信息必須可以跨請求訪問。操作的相關信息可以通過url、session、cookie傳遞,或者通過localStorage、sessionStorage保留在客戶端。
如果用url指定要執行的操作(用history.pushState替換url),只能攜帶簡單的參數(放在history中是個好方法?沒想明白),通用性不好。session和cookie需要向服務器端傳數據,而且獲取保留的參數并不方便。最后決定選擇sessionStorage保存要執行的方法。
跳轉到登錄界面前保存要執行的操作:
if (window.sessionStorage) { var method = JSON.stringify({ name: "要執行的方法的名稱", args: [參數1,參數2] }); window.sessionStorage.setItem("pending.method", method); }
從登錄界面跳轉回頁面,取出要執行的操作并執行:
if (window.sessionStorage) { var pendingMethod; if (pendingMethod = window.sessionStorage.getItem("pending.method")) { window.sessionStorage.removeItem("pending.method"); pendingMethod = JSON.parse(pendingMethod); window[pendingMethod.name].apply($scope, pendingMethod.args || []); } }
總結,采用的方式是通過HTTP_REFERER和cookie記錄登錄后要跳轉的頁面,通過sessionStorage記錄返回頁面后要執行的javascript方法和參數。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/22100.html
摘要:執行操作前判斷用戶的登錄狀態,是則執行操作,否則先跳轉到登錄頁面,登錄成功后返回頁面,頁面繼續執行之前的操作。進入登錄頁時獲得的必須要記錄下來,才能在登錄成功后跳轉回之前的頁面。最后決定選擇保存要執行的方法。 問題 用戶進入頁面A,在頁面A上要執行一個操作X。操作X需要用戶登錄后才能訪問,因此系統引導用戶到登錄頁,用戶登錄后在讓用戶繼續執行操作X。 分析 操作X存在兩種情況,1:跳轉到...
摘要:執行操作前判斷用戶的登錄狀態,是則執行操作,否則先跳轉到登錄頁面,登錄成功后返回頁面,頁面繼續執行之前的操作。進入登錄頁時獲得的必須要記錄下來,才能在登錄成功后跳轉回之前的頁面。最后決定選擇保存要執行的方法。 問題 用戶進入頁面A,在頁面A上要執行一個操作X。操作X需要用戶登錄后才能訪問,因此系統引導用戶到登錄頁,用戶登錄后在讓用戶繼續執行操作X。 分析 操作X存在兩種情況,1:跳轉到...
摘要:模擬登錄新浪微博的核心,也是與模擬登錄最大的不同,密碼加密。已經實現模擬新浪微博登錄的功能,之后不再更新。 參考資料: http://www.csuldw.com/2016/11/10/2016-11-10-simulate-sina-login/ http://blog.csdn.net/fly_leopard/article/details/51148904 http://www....
摘要:在文件的標簽中加上以下代碼新手上路注冊登陸上面只是引用了一些簡單的的,也沒什么難的,不用傷心。 Laravel身為最優雅的PHP框架,很多學習PHP的小伙伴造就對Laravel垂涎欲滴。今天就來實現你的愿望,讓我們一起從零開始,利用Laravel實現Web應用最常見的注冊和登錄功能!所有的課程源碼已放在Github上:laravel-start. Race Start ! 首先我們來...
摘要:本項目是一個簡單的全棧項目,前端新手可以拿來練練手。項目實現了一些簡單的功能,后臺可以對圖書進行錄入錄出掃碼或手動,前臺顯示錄入的圖書,并且前臺注冊登錄后可以將書的訂單發給服務器,并存到服務器。 Vue-book 2.0 Github 地址:https://github.com/percy507/v... 【覺得不錯就來個 star 吧 ^_^】 說明(菜鳥請進,大神繞道 ~) 前端...
閱讀 3585·2023-04-26 01:43
閱讀 2971·2021-10-14 09:42
閱讀 5404·2021-09-30 09:59
閱讀 2172·2021-09-04 16:40
閱讀 1208·2019-08-30 15:52
閱讀 822·2019-08-29 17:09
閱讀 1993·2019-08-26 13:37
閱讀 3432·2019-08-26 10:20