基于(yú)bmob快速搭建小程序用戶模塊(包括登錄、當前用戶、用戶安全) ... - 新聞資訊 - 雲南小程序開發|雲南軟件開發|雲南網站建設-昆明融晨信息技術有限公司

159-8711-8523

雲南網建設/小程序開發/軟件開發

知識

不(bù)管是(shì)網站,軟件還是(shì)小程序,都要(yào / yāo)直接或間接能爲(wéi / wèi)您産生價值,我們在(zài)追求其視覺表現的(de)同時(shí),更側重于(yú)功能的(de)便捷,營銷的(de)便利,運營的(de)高效,讓網站成爲(wéi / wèi)營銷工具,讓軟件能切實提升企業内部管理水平和(hé / huò)效率。優秀的(de)程序爲(wéi / wèi)後期升級提供便捷的(de)支持!

您當前位置>首頁 » 新聞資訊 » 小程序相關 >

基于(yú)bmob快速搭建小程序用戶模塊(包括登錄、當前用戶、用戶安全) ...

發表時(shí)間:2021-3-31

發布人(rén):融晨科技

浏覽次數:90

一鍵登錄

開發小程序登錄後端工作:

  • 客戶端調用wx.login()後獲取的(de)code,後端人(rén)員拿到(dào)code和(hé / huò)微信換取openid和(hé / huò)session_key;
  • 除此之(zhī)外後端人(rén)員還需要(yào / yāo)根據openid生成sessiontoken作爲(wéi / wèi)服務器和(hé / huò)小程序之(zhī)間做登錄态校驗保證安全性,客戶端每次請求需要(yào / yāo)帶上(shàng)sessiontoken,後端需要(yào / yāo)作校驗;
  • 還需要(yào / yāo)提供接口給客戶端保存用戶信息(頭像、名稱等),或者根據openid去和(hé / huò)微信換取用戶信息;
  • 中間的(de)過程的(de)調試還需要(yào / yāo)花費大(dà)量的(de)時(shí)間

利用bmob的(de)小程序sdk的(de)實現一鍵登錄
以(yǐ)上(shàng)後端開發工作全省了(le/liǎo)!!

    wx.login({
success: function (res) {
var user = new Bmob.User();//實例化
user.loginWithWeapp(res.code).then(function (user) {
if (user.get("nickName")) {
//更新緩存中的(de)openid
wx.setStorageSync('openid', user.get("openid"))
} else {
//*************保存用戶其他(tā)信息,比如昵稱頭像之(zhī)類的(de)*****************
wx.getUserInfo({
success: function (result) {
var nickName = result.userInfo.nickName;
var avatarUrl = result.userInfo.avatarUrl;
var u = Bmob.Object.extend("_User");
var query = new Bmob.Query(u);
// 這(zhè)個(gè) id 是(shì)要(yào / yāo)修改條目的(de) id,你在(zài)生成這(zhè)個(gè)存儲并成功時(shí)可以(yǐ)獲取到(dào),請看前面的(de)文檔
query.get(user.id, {
success: function (result) {
// 自動綁定之(zhī)前的(de)賬号
result.set('nickName', nickName);
result.set("userPic", avatarUrl);
result.set("openid", openid);
result.save();
}
});
}
});
//*************保存用戶其他(tā)信息,比如昵稱頭像之(zhī)類的(de)end*****************
}
}, function (err) {
console.log(err, 'errr');
});
}
});
}


user用戶對象中的(de)loginWithWeapp方法使用當前使用小程序的(de)微信用戶身份注冊或登錄,成功後用戶的(de) session 會在(zài)設備上(shàng)持久化保存,之(zhī)後可以(yǐ)使用 Bmob.User.current() 獲取當前登錄用戶

如果該用戶是(shì)第一次使用此應用,調用登錄 API 會創建一個(gè)新的(de)用戶,你可以(yǐ)在(zài) 控制台 >應用> 數據 中的(de) _User表中看到(dào)該用戶的(de)信息,如果該用戶曾經使用該方式登錄過此應用,再次調用登錄 API 會返回同一個(gè)用戶。

登錄後獲取到(dào)一個(gè)用戶數據對象,包括用戶唯一标識objectId、openid、nickName、avatarUrl、authData,authData包括sessiontoken登錄校驗,小程序sdk封裝了(le/liǎo)請求帶上(shàng)了(le/liǎo)緩存authData的(de)sessiontoken,所以(yǐ)session_token這(zhè)部分 不(bù)需要(yào / yāo)bmob的(de)開發者考慮;


當前用戶

如果用戶每次打開App的(de)時(shí)候都要(yào / yāo)求登錄無疑是(shì)令人(rén)感到(dào)厭煩的(de),你可以(yǐ)通過緩存當前的(de)Bmob.User對象來(lái)避免這(zhè)個(gè)問題。

無論你使用任何注冊或者登錄方法,用戶都會在(zài)localStorage中儲存,你可以(yǐ)把緩存作爲(wéi / wèi)一個(gè)session對待,并且自動假設用戶已經登錄了(le/liǎo)。

你可以(yǐ)操作Bmob.User.current()來(lái)獲取當前用戶的(de)信息

var currentUser = Bmob.User.current();

用戶安全

Bmob.User類默認就(jiù)是(shì)受保護的(de),在(zài)Bmob.User中保存的(de)數據隻能被那個(gè)用戶所修改。默認地(dì / de),數據仍然可以(yǐ)被任意客戶端所讀取。這(zhè)樣就(jiù)是(shì)說(shuō),有些Bmob.User對象被認證後是(shì)可以(yǐ)修改的(de),其他(tā)的(de)仍然是(shì)隻讀的(de)。

特别的(de),你不(bù)能調用save或者delete方法除非Bmob.User經過了(le/liǎo)認證,就(jiù)比如調用過了(le/liǎo)logIn或者signUp方法,這(zhè)樣保證隻有用戶能改動他(tā)們自身的(de)數據。

相關案例查看更多