Uniapp如何保持登入狀態
Uniapp是一個基於Vue.js的跨平台開發框架,可以用它來開發iOS、Android、H5等多平台應用程式。在開發實際專案中,面對登入、登出、資料互動等問題,如何保持登入狀態一直是個困難。下面,我們將從幾個方面來介紹Uniapp如何保持登入狀態。
在實際開發中,我們需要先進行登入操作,然後才能進行其他操作。在使用者登入時,伺服器會傳回認證資訊(如token)給客戶端,客戶端收到認證資訊後,需要將其儲存起來,以便後續的資料互動操作。 Uniapp提供了儲存認證資訊的方法,可將其儲存在uni-storage或uni-app全域物件中。
uni.setStorageSync('token', res.data.token); // uni-storage儲存
uni.$app.globalData.token = res.data.token; // uni-app全域物件儲存
在使用者關閉應用程式後再開啟應用程式時,我們希望能夠自動登錄,而不需要每次都手動登入。為了實現自動登錄,我們可以在應用程式開啟時進行認證判斷,判斷是否已登錄,如果已登入則進入主頁面,否則進入登入頁面。以下是範例程式碼:
async onLaunch() {
const token = uni.getStorageSync('token'); if (token) { // 已经登录,获取用户信息,进入主页面 try { const userInfo = await getUserInfo(token); store.commit('setUserInfo', userInfo); uni.switchTab({ url: '/pages/home/home' }); } catch (e) { console.log(e); } } else { // 未登录,进入登录页面 uni.reLaunch({ url: '/pages/login/login' }); }
}
攔截器(interceptor)可以用於請求過程的處理,如過濾、重定向等。我們可以使用攔截器來判斷目前請求的介面是否需要登入認證,如果需要,則判斷是否已經登錄,如果已經登入則新增認證訊息,否則跳到登入頁面。
以下是攔截器的範例程式碼:
// 在請求之前新增攔截器
uni.addInterceptor({
// 请求前拦截 invoke(request) { const token = uni.getStorageSync('token'); // 判断接口是否需要登录认证 if (request.header.Authorization === 'Bearer ${token}') { // 已经登录,添加认证信息 request.header.Authorization = 'Bearer ${token}'; } else { // 未登录,跳转到登录页面 uni.navigateTo({ url: '/pages/login/login' }); } // 继续请求 return request; }, // 响应后拦截 intercept(response, request) { // 处理响应结果 return response; }
});
當使用者登出登入時,我們需要清除儲存在客戶端的認證資訊。
uni.removeStorageSync('token'); // uni-storage清除
uni.$app.globalData.token = null; // uni-app全域物件清除
。
以上就是Uniapp如何保持登入狀態的方法。透過規範的登入和認證方式、自動登入、攔截器和登出等手段來維持登入狀態,可以為應用程式的安全性和使用者體驗提供保障。
以上是uniapp如何保持登入狀態的詳細內容。更多資訊請關注PHP中文網其他相關文章!