註銷的功能,直接寫在springboot的controller裏面就能夠了,經過刪除redis的方式來完成用戶的註銷功能。源碼:https://github.com/limingios/wxProgram.git 中No.15前端
後端代碼經過用戶user的Id,刪除redis的方式來完成。編寫對應的controllerjava
springboot -api 項目中。ios
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="用戶註冊登陸的接口",tags={"註冊和登陸的controller"}) public class RegistLoginController extends BasicController{ @Autowired private UserService userService; @ApiOperation(value="用戶註冊",notes="用戶註冊的接口") @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("用戶名或已經存在,請更換在試試!"); } 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; } }
用戶登陸跳轉到我的信息頁面
> 修改對應的js跳轉,用戶登陸後保存對應的token到redis中git
const app = getApp() Page({ data: { }, doLogin: function (e) { var formObject = e.detail.value; var username = formObject.username; var password = formObject.password; // 簡單驗證 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' // 默認值 }, 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', }) } })
我的信息頁面註銷
> 在註銷按鈕中綁定事件方法,而後從app的全局變量app.userInfo中得到用戶的id,發送請求,完成redis中用戶的id的刪除,完成註銷並跳轉到註冊頁面。github
<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'>已關注</button> <button size='mini' type='primary' class='follow' data-followType='1' bindtap='followMe'>關注我</button> <view class='container-row'> <label class='info-items'>{{fansCounts}} 粉絲</label> <label class='info-items'>{{followCounts}} 關注</label> <label class='info-items'>{{receiveLikeCounts}} 獲贊</label> </view> </view> </view> <view class="line"></view>
// pages/mine/mine.js const app = getApp() Page({ /** * 頁面的初始數據 */ 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' // 默認值 }, 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 }) } } }) }, /** * 生命週期函數--監聽頁面加載 */ onLoad: function (options) { }, /** * 生命週期函數--監聽頁面初次渲染完成 */ onReady: function () { }, /** * 生命週期函數--監聽頁面顯示 */ onShow: function () { }, /** * 生命週期函數--監聽頁面隱藏 */ onHide: function () { }, /** * 生命週期函數--監聽頁面卸載 */ onUnload: function () { }, /** * 頁面相關事件處理函數--監聽用戶下拉動做 */ onPullDownRefresh: function () { }, /** * 頁面上拉觸底事件的處理函數 */ onReachBottom: function () { }, /** * 用戶點擊右上角分享 */ onShareAppMessage: function () { } })
用戶登陸,redis內增長
>用戶登陸保存user的id到redis中web
點擊註銷,查看redis內容
>redis清空了對應user的id信息,跳轉到註冊頁面。redis
以前寫的內容有老鐵反應,swagger能詳細講講參數不,我說這個坑我必定填。spring
####註釋關鍵字詳解apache
@ApiOperation
json
@ApiOperation(value = 「接口說明」, httpMethod = 「接口請求方式」, response = 「接口返回參數類型」, notes = 「接口發佈說明」
@ApiImplicitParam
@ApiModel
@ApiModelProperty()用於方法,字段; 表示對model屬性的說明或者數據操做更改
value–字段說明
name–重寫屬性名字
dataType–重寫屬性類型
required–是否必填
example–舉例說明
hidden–隱藏
@ApiModel(value="user對象",description="用戶對象user") public class Users implements Serializable{ private static final long serialVersionUID = 1L; @ApiModelProperty(value="用戶名",name="username",example="idig8") private String username; @ApiModelProperty(value="狀態",name="state",required=true) private Integer state; private String password; @ApiModelProperty(value="id數組",hidden=true) private String[] ids; }
PS:OK,這就是我們我的信息中的註銷功能,也能夠好好熟悉下swagger api的使用其實真的頗有用!
>>原創文章,歡迎轉載。轉載請註明:轉載自IT人故事會,謝謝!
>>原文連接地址:「小程序JAVA實戰」小程序個人我的信息-註銷功能(42)