當前位置:首頁 » 網頁前端 » 前端用戶登錄
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

前端用戶登錄

發布時間: 2023-04-05 17:47:23

『壹』 前端怎麼判斷用戶是否登錄

前端是沒法確認用戶有沒有登錄的,不過前端可以發請求給後端,向後段詢問用戶是否登錄。

『貳』 前端 vue 已登陸用戶怎麼處理

可以嘗試用vuex做狀態管理,當用戶登錄成功之後,將狀態信息存放在相應的本地(如果是web端可以定義一個cookie,設置一下過期時間,如果是移動端,可以嘗試放在localstorage)。登錄之前做阻塞,去做這個狀態信息的檢測,通過就登錄。沒通過就路由到登錄界面

『叄』 11 | 登錄前端實現

前端任務點,編寫登錄請求函數,和 用戶注冊 類似,前端拿到用戶名和密碼發起 POST 請求。

收到 token 如何持久化存儲,如何讓每次請求都攜帶 token 是這里的點。

用戶登錄的介面詳情可以點 這里 。

這里有可以優化的點,未來可能需要添加驗證碼等附加信息,這個時候就需要添加函數參數,就會比較麻煩,可以將參數數據格式包裝成一個對象。當然,這里還是使用第一種方法了。

這不是重點,重點是登錄成功後,我們要做的事情。

按照介面約定,登錄成功我們可以得到如下信息:

這里我們要用到 token 欄位,是我們現在有 token 了,但一刷新就沒了,所以我們要做一下持久化存儲,你想存哪裡就存哪裡,只要你能找到。這里就存儲 localStorage 中了,在 Chorme86 中你甚至可以存到一個本地的文本文件中,只不過讀取速度比較慢罷了。

除了 token,我們還要將用戶信息存下來,比如首頁展示用的用戶頭像等信息。

關於本地信息的安全性問題,本地保存的用戶信息並不作為數據請求的憑證,僅供展示使用,當用戶更改本地的用戶信息對於登錄的狀態不會有影響,因為後端的判斷依據是 token,token 有效就登錄成功,而不是說本地存儲的用戶信息是誰服務端就認為你是誰,前端是不可信的。這種登錄方式的危險點在於用戶 token 被盜,但這很難避免,最不安全的是人。。。

登錄成功,返回首頁,用戶名或者是用戶頭像並沒有同步更新,這是因為,這里是單頁應用,你在 login 頁面將登錄用戶信息存到 localStorage 中,然後跳轉到了首頁,此時頁面沒有刷新,而 localStorage 中的信息沒有及時更新到 DOM 中,此時的用戶信息還是你沒有進入 login 頁面的用戶信息,自然是無法展示的,怎麼解決呢?很簡單,刷新一下。

當頁面刷新時,用戶信息會從 localStorage 中讀取,顯示的就是現在的登錄用戶了,但。。。

我不想刷新。

也很簡單,搞成響應式數據就好了呀。來人呀,上Vuex。

當你將 token 存在 cookie 中,前端並不需要主動設置,默認就攜帶傳給了服務端,而這里我們存到 Authorization 中,就需要我們設置一下,攔截請求,在請求發送前添加 token。

好的,來捋一捋流程。

用戶訪問 /login,被前端路由處理,指向Login.vue,用戶看到登錄框,填入自己的賬號,當用戶填寫賬號時,name password被實時監聽,同時會對登錄按鈕的可操作產生影響,只有當用戶將賬密輸入完整時,登錄按鈕可用。

前端收集用戶信息,調用 network 中封裝的 longin 請求函數,該請求發送前被攔截,添加 token,可能為空,使用賬密登錄時,token沒實際效用。

後端檢查成功給響應,前端將響應中數據的 token 通過觸發 mutations 更新 Vuex 中 state,同時,將該 token 存到 localStorage,以免用戶關掉頁面導致 token 丟失。

登錄成功跳到應用首頁,用戶頭像等信息通過 Vuex 獲取,因為 Vuex 中的數據是響應式的,此時從 login 跳轉到首頁,用戶頭像等信息也會得到相應的更新。

當用戶新增文章時,只需向伺服器傳文章數據就可以了,而對於文章作者的相關信息則由後端從請求頭中的 token 解析得到,這里需要注意,前端不要將本地的用戶信息作為准確的作者信息,對於用戶可以偽造的信息要做最小化的信任,用戶完全有能力將本地用戶名從張三改為李四,而最終作者是那個則需要由用戶提供的 token 來判定,雖說 token 也有可能被偽造,但難度相對較大,往往是被竊取的可能性更大。

無密碼登錄其實還是需要「密碼」的,只不過是換了一個臨時性的對人不可讀的字元串來代替罷了,並且每次請求幫你填好了。

在不考慮安全性的情況下本質上其實就是你將密碼存到了瀏覽器里,然後你每次訪問網站時讓瀏覽器幫你輸入用戶名和密碼,這個過程你是無感知的,這樣自己就不用像個憨憨一樣每次刷新就要填一遍表單。

填表是一件非常無聊的事。

要學一波 TypeScript 了呀。

『肆』 前端怎麼實現用戶必須登錄了才能訪問其他頁面,否則跳回登陸界面

給你說個思路吧!
登錄成功之後,把登錄信息加密後保存在cookie裡面;
然後建一個js文件,在這個文件裡面做用戶是否已登錄的判斷!如果登錄了就直接顯示該頁面,如果沒登錄,就跳轉回登錄頁面!
這個js文件在登錄後才能看到的頁面都做引用;

『伍』 react前端如何獲取登錄用戶ip

react前端獲取登錄物滑用戶ip:
1、是react項目,採用componentDidMount觸發時間作為計算分界點。
2、本地運罩困臘行,選用搜狐介面http://pv.sohu.com/cityjsonie=utf-8,可以獲取到尺飢訪問者IP等信息。

『陸』 前端判斷用戶登錄狀態方法

方法一:

登錄成功後,後端返回一個 cookie,根據這個 cookie 的有無來判斷;退出登錄時,後端會刪除這個 cookie;

方法二:

登錄成功後,前端設置 cookie,比如'isLogin = true',根據isLogin的值去判斷;退出登錄時刪除 cookieisLogin或設置  'isLogin = false'。

方法三:

1、前端發送登錄請求

2、後端返回 token,前端得到後端返回的 token,將其寫入到 localStorage(或sesstionStorage) 中,後續請求中都攜帶 token

3、後端判斷 token 是否過期,如果過期就對前台的請求響應過期標識或者狀態碼

4、前端得到過期標識後,清除 localStorage(或sesstionStorage)中的 token,然後重定向到 login 路由

    以上這是我知道的三種方法,最常用的是第三種,如果誰還有其他的判斷方法,歡迎在下方留言。

『柒』 前端登陸實現

四種方式

Cookie 出現的原因: HTTP 協議是無狀態的,每次請求都會建立一個新的鏈接,請求結束就會斷開鏈接,優點就是可以節省鏈接資源,缺點就是無法保存用戶狀態。Cookie 的出現就是為了解決這個問題。

Cookie 是存儲在瀏覽器中的,可以通過 Js 和 set-cookie 這個響應欄位來進行設置。

cookie 的限制:

有了 cookie 之後,服務端就可以從客戶端獲取到信息,如果需要對信息進行驗證,那麼還需要 session

服務端在收到客戶端的請求之後,會在伺服器中開辟一片內存空間來存放 session

第一次登陸之後,下次再訪問的時候就會攜帶這個 cookie,服務端就可以根據 sessionId 進行驗證用戶是否登陸(判斷這個 sessionId 和服務端保存的 sessionId 是否一致,是否有這個 sessionId 的記錄或者記錄是否有效)

客戶端瀏覽器訪問伺服器的時候,伺服器把客戶端信息以某種形式記錄在伺服器上。這就是 Session。客戶端瀏覽器再次訪問時只需要從該 Session 中查找該客戶的狀態就可以了。

Token 是 伺服器 生成的一個字元串,作為客戶端請求的一個令牌。第一次登陸之後,伺服器會生成一個 Token 返回給客戶端,客戶端後續訪問的時候,只需帶上這個 Token 進行身份認證

缺點

JWT(Json Web Token)

服務端不需要存儲 Token 那麼服務端是怎麼驗證客戶端傳遞過來的 Token 是否有效的呢?

答案:

Token 並不是雜亂無章的字元串,而是通過多種演算法拼接而成的字元串

header 部分指定了這個 Token 所使用的簽名演算法

payload 部分表明了這個 JWT 的意圖

signature 部分為 JWT 的簽名,主要是為了讓 JWT 不被隨意的篡改

簽名的部分有兩個步驟

一:

二:

最後的 Token 計算如下:

單點登陸指的是公司會搭建一個公共的認證中心,公司里的所有產品的認證都可以在這個認證中心中完成,一個產品在認證中心認證之後,再去訪問其他產品時就不需要再次認證

這個時候,由於 a.com 存在已登錄的 Cookie 信息,所以伺服器端直接認證成功。

這個時候由於認證中心存在之前登陸過的 cookie,所以不需要再輸入賬號密碼,直接從第四步開始執行

目前我們已經完成了單點登錄,在同一套認證中心的管理下,多個產品可以共享登錄態。現在我們需要考慮退出了,即:在一個產品中退出了登錄,怎麼讓其他的產品也都退出登錄?

原理也不難,其實就是在攜帶 ticket 去請求認證中心的時候,再去請求一下認證中心的退出登陸的 api 即可

當某個產品 c.com 退出登陸時

sso 就是一個集中地驗證系統。你項目內請求時,向 sso 發一個請求,他給你個 token 你扔到游覽器緩存里,請求的時候放在請求頭里帶著。和其他驗證介面一樣。 他好就好在,一個賬號在不同系統里都可以登錄,因為不同項目可以共用這個 token。並且通過 sso 集中管理一些用戶信息,你可以方便的拿用戶信息。

以微信為例子

『捌』 前端JS 怎麼實現用戶登陸之後點各個頁面都不用再登陸

給你說個思路吧!
登錄成功之後,把登錄信息加密後保存在cookie裡面;
然後建一個js文件,在這個文件裡面做用戶是否已登錄的判斷!如果登錄了就直接顯示該頁面,如果沒登錄,就跳轉回登錄頁面!
這個js文件在登錄後才能看到的頁面都做引用;

『玖』 為什麼前端登錄了用戶名和密碼還是undefined

undefined表示未定義,你取值欄位名錯誤,或者後端沒有傳值,仔細檢查下就知道了。
謝謝採納!