注銷的功能,直接寫在springboot的controller里面就可以了,通過刪除redis的方式來完成用戶的注銷功能。源碼:https://github.com/limingios/wxProgram.git 中No.15
創(chuàng)新互聯(lián)專注于企業(yè)營(yíng)銷型網(wǎng)站、網(wǎng)站重做改版、新縣網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5頁(yè)面制作、成都商城網(wǎng)站開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為新縣等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
后端代碼通過用戶user的Id,刪除redis的方式來完成。編寫對(duì)應(yīng)的controller
springboot -api 項(xiàng)目中。
package?com.idig8.controller; import?java.util.UUID; import?org.apache.commons.lang3.StringUtils; import?org.springframework.beans.BeanUtils; import?org.springframework.beans.factory.annotation.Autowired; import?org.springframework.web.bind.annotation.PostMapping; import?org.springframework.web.bind.annotation.RequestBody; import?org.springframework.web.bind.annotation.RestController; import?com.idig8.pojo.Users; import?com.idig8.pojo.vo.UsersVO; import?com.idig8.service.UserService; import?com.idig8.utils.JSONResult; import?com.idig8.utils.MD5Utils; import?io.swagger.annotations.Api; import?io.swagger.annotations.ApiImplicitParam; import?io.swagger.annotations.ApiOperation; @RestController @Api(value="用戶注冊(cè)登錄的接口",tags={"注冊(cè)和登錄的controller"}) public?class?RegistLoginController?extends?BasicController{ ????@Autowired ????private?UserService?userService; ????@ApiOperation(value="用戶注冊(cè)",notes="用戶注冊(cè)的接口") ????@PostMapping("/regist") ????public?JSONResult?regist(@RequestBody?Users?user)?{ ????????//1.判斷用戶名和密碼不能為空 ????????if(StringUtils.isBlank(user.getUsername())||StringUtils.isBlank(user.getPassword()))?{ ????????????return?JSONResult.errorMsg("用戶名或密碼不能為空"); ????????} ????????//2.判斷用戶名是否存在 ????????boolean?usernameIsExist?=?userService.queryUsernameIsExist(user.getUsername()); ????????if(!usernameIsExist)?{ ????????????user.setNickname(user.getUsername()); ????????????try?{ ????????????????user.setPassword(MD5Utils.getMD5Str(user.getPassword())); ????????????}?catch?(Exception?e)?{ ????????????????return?JSONResult.errorMsg(e.getMessage()); ????????????} ????????????user.setFollowCounts(0); ????????????user.setReceiveLikeCounts(0); ????????????user.setFansCounts(0); ????????????userService.saveUser(user); ????????}else?{ ????????????return?JSONResult.errorMsg("用戶名或已經(jīng)存在,請(qǐng)更換在試試!"); ????????} ????????UsersVO?userVO?=?setUserRedisSessionToken(user); ????????return?JSONResult.ok(userVO); ????} ????@ApiOperation(value="用戶登錄",notes="用戶登錄的接口") ????@PostMapping("/login") ????public?JSONResult?login(@RequestBody?Users?user)?{ ????????//1.判斷用戶名和密碼不能為空 ????????if(StringUtils.isBlank(user.getUsername())||StringUtils.isBlank(user.getPassword()))?{ ????????????return?JSONResult.errorMsg("用戶名或密碼不能為空"); ????????} ????????//2.判斷用戶名是否存在 ????????Users?userObject?=?userService.queryUserIsExist(user); ????????if(userObject==null){ ????????????return?JSONResult.errorMsg("用戶名或密碼不存在!"); ????????} ????????UsersVO?userVO?=?setUserRedisSessionToken(userObject); ????????return?JSONResult.ok(userVO); ????} ????@ApiOperation(value="用戶注銷",notes="用戶注銷的接口") ????@ApiImplicitParam(name="userId",value="用戶id",required=true,dataType="String",paramType="query") ????@PostMapping("/logout") ????public?JSONResult?logout(String?userId)?{ ????????try?{ ????????????redis.del(USERS_REDIS_SESSION?+?":"?+?userId); ????????}?catch?(Exception?e)?{ ????????????return?JSONResult.errorMsg("注銷失敗"+e.getMessage()); ????????} ????????return?JSONResult.ok(); ????} ????public?UsersVO?setUserRedisSessionToken(Users?userModel)?{ ????????String?uniqueToken?=?UUID.randomUUID().toString(); ????????redis.set(USERS_REDIS_SESSION?+?":"?+?userModel.getId(),?uniqueToken,?USERS_REDIS_SESSION_TL); ????????UsersVO?userVO?=?new?UsersVO(); ????????BeanUtils.copyProperties(userModel,?userVO); ????????userVO.setUserToken(uniqueToken); ????????return?userVO; ????} }
用戶登錄跳轉(zhuǎn)到個(gè)人信息頁(yè)面
> 修改對(duì)應(yīng)的js跳轉(zhuǎn),用戶登錄后保存對(duì)應(yīng)的token到redis中
const?app?=?getApp() Page({ ??data:?{ ??}, ??doLogin:?function?(e)?{ ????var?formObject?=?e.detail.value; ????var?username?=?formObject.username; ????var?password?=?formObject.password; ????//?簡(jiǎn)單驗(yàn)證 ????if?(username.length?==?0?||?password.length?==?0)?{ ??????wx.showToast({ ????????title:?'用戶名或密碼不能為空', ????????icon:?'none', ????????duration:?3000 ??????}) ????}?else?{ ??????wx.showLoading({ ????????title:?'正在加載中。。。' ??????}); ??????wx.request({ ????????url:?app.serverUrl?+?"/login", ????????method:?"POST", ????????data:?{ ??????????username:?username, ??????????password:?password ????????}, ????????header:?{ ??????????'content-type':?'application/json'?//?默認(rèn)值 ????????}, ????????success:?function?(res)?{ ??????????console.log(res.data); ??????????var?status?=?res.data.status; ??????????wx.hideLoading(); ??????????if?(status?==?200)?{ ????????????wx.showToast({ ??????????????title:?"用戶登陸成功~!", ??????????????icon:?'none', ??????????????duration:?3000 ????????????}) ????????????app.userInfo?=?res.data.data; ????????????wx.redirectTo({ ??????????????url:?'../mine/mine', ????????????}) ??????????}?else?if?(status?==?500)?{ ????????????wx.showToast({ ??????????????title:?res.data.msg, ??????????????icon:?'none', ??????????????duration:?3000 ????????????}) ??????????} ????????} ??????}) ????} ??}, ??goRegisterPage:?function?(e)?{ ????wx.redirectTo({ ??????url:?'../userRegister/userRegister', ????}) ??} })
個(gè)人信息頁(yè)面注銷
> 在注銷按鈕中綁定事件方法,然后從app的全局變量app.userInfo中獲得用戶的id,發(fā)送請(qǐng)求,完成redis中用戶的id的刪除,完成注銷并跳轉(zhuǎn)到注冊(cè)頁(yè)面。
<view> ??<view?class='container'> ??????<image?src="{{faceUrl}}"?class="face"></image> ????<label?class='nickname'>{{nickname}}</label> ??????<button?size='mini'?class='primary'?bindtap='uploadVideo'>?上傳作品</button> ??????<button?size='mini'?type=''?class='logout'?bindtap='logout'>注銷</button> ????????<button?size='mini'?type=''?class='follow'?data-followType='0'?bindtap='followMe'>已關(guān)注</button> ????????<button?size='mini'?type='primary'?class='follow'?data-followType='1'?bindtap='followMe'>關(guān)注我</button> ????<view?class='container-row'> ??????<label?class='info-items'>{{fansCounts}}?粉絲</label> ??????<label?class='info-items'>{{followCounts}}?關(guān)注</label> ??????<label?class='info-items'>{{receiveLikeCounts}}?獲贊</label> ????</view> ??</view> </view> <view?class="line"></view>
//?pages/mine/mine.js const?app?=?getApp() Page({ ??/** ???*?頁(yè)面的初始數(shù)據(jù) ???*/ ??data:?{ ????faceUrl:?"../../resource/images/noneface.png", ????nickname:?"昵稱", ????fansCounts:?0, ????followCounts:?0, ????receiveLikeCounts:?0, ??}, ??logout:function(e){ ????var?user?=?app.userInfo; ????wx.showLoading({ ??????title:?'正在注銷中。。。' ????}); ????wx.request({ ??????url:?app.serverUrl?+?"/logout?userId="+user.id, ??????method:?"POST", ??????header:?{ ????????'content-type':?'application/json'?//?默認(rèn)值 ??????}, ??????success:?function?(res)?{ ????????console.log(res.data); ????????var?status?=?res.data.status; ????????wx.hideLoading(); ????????if?(status?==?200)?{ ??????????wx.showToast({ ????????????title:?"用戶注銷成功~!", ????????????icon:?'none', ????????????duration:?3000 ??????????}) ??????????app.userInfo?=?null; ??????????wx.redirectTo({ ????????????url:?'../userRegister/userRegister', ??????????}) ????????}?else?if?(status?==?500)?{ ??????????wx.showToast({ ????????????title:?res.data.msg, ????????????icon:?'none', ????????????duration:?3000 ??????????}) ????????} ??????} ????}) ??}, ??/** ???*?生命周期函數(shù)--監(jiān)聽頁(yè)面加載 ???*/ ??onLoad:?function?(options)?{ ??}, ??/** ???*?生命周期函數(shù)--監(jiān)聽頁(yè)面初次渲染完成 ???*/ ??onReady:?function?()?{ ??}, ??/** ???*?生命周期函數(shù)--監(jiān)聽頁(yè)面顯示 ???*/ ??onShow:?function?()?{ ??}, ??/** ???*?生命周期函數(shù)--監(jiān)聽頁(yè)面隱藏 ???*/ ??onHide:?function?()?{ ??}, ??/** ???*?生命周期函數(shù)--監(jiān)聽頁(yè)面卸載 ???*/ ??onUnload:?function?()?{ ??}, ??/** ???*?頁(yè)面相關(guān)事件處理函數(shù)--監(jiān)聽用戶下拉動(dòng)作 ???*/ ??onPullDownRefresh:?function?()?{ ??}, ??/** ???*?頁(yè)面上拉觸底事件的處理函數(shù) ???*/ ??onReachBottom:?function?()?{ ??}, ??/** ???*?用戶點(diǎn)擊右上角分享 ???*/ ??onShareAppMessage:?function?()?{ ??} })
用戶登錄,redis內(nèi)增加
>用戶登錄保存user的id到redis中
點(diǎn)擊注銷,查看redis內(nèi)容
>redis清空了對(duì)應(yīng)user的id信息,跳轉(zhuǎn)到注冊(cè)頁(yè)面。
之前寫的內(nèi)容有老鐵反應(yīng),swagger能詳細(xì)講講參數(shù)不,我說這個(gè)坑我一定填。
####注釋關(guān)鍵字詳解
@ApiOperation
@ApiOperation(value = “接口說明”, httpMethod = “接口請(qǐng)求方式”, response = “接口返回參數(shù)類型”, notes = “接口發(fā)布說明”
@ApiImplicitParam
@ApiModel
@ApiModelProperty()用于方法,字段; 表示對(duì)model屬性的說明或者數(shù)據(jù)操作更改
value–字段說明
name–重寫屬性名字
dataType–重寫屬性類型
required–是否必填
example–舉例說明
hidden–隱藏
@ApiModel(value="user對(duì)象",description="用戶對(duì)象user") public?class?Users?implements?Serializable{ ????private?static?final?long?serialVersionUID?=?1L; ?????@ApiModelProperty(value="用戶名",name="username",example="idig8") ?????private?String?username; ?????@ApiModelProperty(value="狀態(tài)",name="state",required=true) ??????private?Integer?state; ??????private?String?password; ??????@ApiModelProperty(value="id數(shù)組",hidden=true) ??????private?String[]?ids; }
PS:OK,這就是咱們個(gè)人信息中的注銷功能,也可以好好熟悉下swagger api的使用其實(shí)真的很有用!
>>原創(chuàng)文章,歡迎轉(zhuǎn)載。轉(zhuǎn)載請(qǐng)注明:轉(zhuǎn)載自IT人故事會(huì),謝謝!
>>原文鏈接地址:「小程序JAVA實(shí)戰(zhàn)」小程序我的個(gè)人信息-注銷功能(42)
文章標(biāo)題:「小程序JAVA實(shí)戰(zhàn)」小程序我的個(gè)人信息-注銷功能(42)
網(wǎng)站網(wǎng)址:http://bm7419.com/article48/jceghp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、關(guān)鍵詞優(yōu)化、定制開發(fā)、虛擬主機(jī)、網(wǎng)站策劃、網(wǎng)站排名
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)