首頁 >web前端 >uni-app >uniapp如何保持登入狀態

uniapp如何保持登入狀態

PHPz
PHPz原創
2023-04-27 09:03:502465瀏覽

Uniapp如何保持登入狀態

Uniapp是一個基於Vue.js的跨平台開發框架,可以用它來開發iOS、Android、H5等多平台應用程式。在開發實際專案中,面對登入、登出、資料互動等問題,如何保持登入狀態一直是個困難。下面,我們將從幾個方面來介紹Uniapp如何保持登入狀態。

  1. 登入和儲存認證資訊

在實際開發中,我們需要先進行登入操作,然後才能進行其他操作。在使用者登入時,伺服器會傳回認證資訊(如token)給客戶端,客戶端收到認證資訊後,需要將其儲存起來,以便後續的資料互動操作。 Uniapp提供了儲存認證資訊的方法,可將其儲存在uni-storage或uni-app全域物件中。

uni.setStorageSync('token', res.data.token);  // uni-storage儲存
uni.$app.globalData.token = res.data.token;   // uni-app全域物件儲存

  1. 自動登入

在使用者關閉應用程式後再開啟應用程式時,我們希望能夠自動登錄,而不需要每次都手動登入。為了實現自動登錄,我們可以在應用程式開啟時進行認證判斷,判斷是否已登錄,如果已登入則進入主頁面,否則進入登入頁面。以下是範例程式碼:

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'
    });
}

}

  1. 攔截器

攔截器(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;
}

});

  1. 退出登入

當使用者登出登入時,我們需要清除儲存在客戶端的認證資訊。

uni.removeStorageSync('token');  // uni-storage清除
uni.$app.globalData.token = null;   // uni-app全域物件清除

以上就是Uniapp如何保持登入狀態的方法。透過規範的登入和認證方式、自動登入、攔截器和登出等手段來維持登入狀態,可以為應用程式的安全性和使用者體驗提供保障。

以上是uniapp如何保持登入狀態的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn