小程序登录逻辑跑通;登陆密码MD5存储;小程序首页添加调试输出
This commit is contained in:
parent
d28fa0dd00
commit
08bab25a48
@ -8,6 +8,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||||||
import org.springframework.stereotype.Controller;
|
import org.springframework.stereotype.Controller;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
import org.springframework.web.bind.annotation.ResponseBody;
|
import org.springframework.web.bind.annotation.ResponseBody;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
@ -22,7 +23,7 @@ public class UserController {
|
|||||||
// @RequestMapping("/login")
|
// @RequestMapping("/login")
|
||||||
@PostMapping("/login")
|
@PostMapping("/login")
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
public Res login(String username, String password) {
|
public Res login(@RequestParam("username") String username, @RequestParam("password") String password) {
|
||||||
User user = userService.getUserByUsername(username);
|
User user = userService.getUserByUsername(username);
|
||||||
if (user != null) {
|
if (user != null) {
|
||||||
String passwordHash = user.getPassword();
|
String passwordHash = user.getPassword();
|
||||||
|
File diff suppressed because one or more lines are too long
11
miniprogram/package-lock.json
generated
11
miniprogram/package-lock.json
generated
@ -23,6 +23,7 @@
|
|||||||
"@tarojs/shared": "3.5.7",
|
"@tarojs/shared": "3.5.7",
|
||||||
"@tarojs/taro": "3.5.7",
|
"@tarojs/taro": "3.5.7",
|
||||||
"@tarojs/taro-h5": "3.5.7",
|
"@tarojs/taro-h5": "3.5.7",
|
||||||
|
"blueimp-md5": "^2.19.0",
|
||||||
"vue": "^3.0.0"
|
"vue": "^3.0.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
@ -5994,6 +5995,11 @@
|
|||||||
"safe-buffer": "^5.1.1"
|
"safe-buffer": "^5.1.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/blueimp-md5": {
|
||||||
|
"version": "2.19.0",
|
||||||
|
"resolved": "https://registry.npmmirror.com/blueimp-md5/-/blueimp-md5-2.19.0.tgz",
|
||||||
|
"integrity": "sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w=="
|
||||||
|
},
|
||||||
"node_modules/body-parser": {
|
"node_modules/body-parser": {
|
||||||
"version": "1.20.1",
|
"version": "1.20.1",
|
||||||
"resolved": "https://registry.npmmirror.com/body-parser/-/body-parser-1.20.1.tgz",
|
"resolved": "https://registry.npmmirror.com/body-parser/-/body-parser-1.20.1.tgz",
|
||||||
@ -26696,6 +26702,11 @@
|
|||||||
"safe-buffer": "^5.1.1"
|
"safe-buffer": "^5.1.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"blueimp-md5": {
|
||||||
|
"version": "2.19.0",
|
||||||
|
"resolved": "https://registry.npmmirror.com/blueimp-md5/-/blueimp-md5-2.19.0.tgz",
|
||||||
|
"integrity": "sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w=="
|
||||||
|
},
|
||||||
"body-parser": {
|
"body-parser": {
|
||||||
"version": "1.20.1",
|
"version": "1.20.1",
|
||||||
"resolved": "https://registry.npmmirror.com/body-parser/-/body-parser-1.20.1.tgz",
|
"resolved": "https://registry.npmmirror.com/body-parser/-/body-parser-1.20.1.tgz",
|
||||||
|
@ -50,6 +50,7 @@
|
|||||||
"@tarojs/shared": "3.5.7",
|
"@tarojs/shared": "3.5.7",
|
||||||
"@tarojs/taro": "3.5.7",
|
"@tarojs/taro": "3.5.7",
|
||||||
"@tarojs/taro-h5": "3.5.7",
|
"@tarojs/taro-h5": "3.5.7",
|
||||||
|
"blueimp-md5": "^2.19.0",
|
||||||
"vue": "^3.0.0"
|
"vue": "^3.0.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
"description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html",
|
"description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html",
|
||||||
"projectname": "epp",
|
"projectname": "epp",
|
||||||
"setting": {
|
"setting": {
|
||||||
"compileHotReLoad": true,
|
"compileHotReLoad": false,
|
||||||
"urlCheck": false
|
"urlCheck": false
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -10,7 +10,8 @@ const App = createApp({
|
|||||||
// 全局变量 refer: https://docs.taro.zone/docs/come-from-miniapp#%E5%85%A8%E5%B1%80%E5%8F%98%E9%87%8F
|
// 全局变量 refer: https://docs.taro.zone/docs/come-from-miniapp#%E5%85%A8%E5%B1%80%E5%8F%98%E9%87%8F
|
||||||
App.use(setGlobalDataPlugin, {
|
App.use(setGlobalDataPlugin, {
|
||||||
globalData: {
|
globalData: {
|
||||||
baseUrl: "http://localhost:8080", // 不带最后的 /
|
debugMode: true, // 是否展示调试内容
|
||||||
|
baseUrl: "http://localhost", // 不带最后的 /
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -4,6 +4,24 @@
|
|||||||
<view style="display: block; padding-left: 30px; padding-top: 12px;">
|
<view style="display: block; padding-left: 30px; padding-top: 12px;">
|
||||||
<text>欢迎你,{{ displayUsername }}!</text>
|
<text>欢迎你,{{ displayUsername }}!</text>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
|
<view style="display: block;" v-if="isVisitor">
|
||||||
|
<view style="display: flex;text-align: center;margin-top: 20px;">
|
||||||
|
<view style="width: 25%;">
|
||||||
|
<image src="../../image/icon/code.png" style="width: 40px;height: 40px;" @tap='goCode'></image>
|
||||||
|
<view>进出码</view>
|
||||||
|
</view>
|
||||||
|
<view style="width: 25%;">
|
||||||
|
<image src="../../image/icon/feedback.png" style="width: 40px;height: 40px;" bindtap='goFeedback'></image>
|
||||||
|
<view>反馈查看</view>
|
||||||
|
</view>
|
||||||
|
<view style="width: 25%;">
|
||||||
|
<image src="../../image/icon/apply.png" style="width: 40px;height: 40px;" bindtap='goApply'></image>
|
||||||
|
<view>申请记录</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
<view style="display: block;" v-if="isUser">
|
<view style="display: block;" v-if="isUser">
|
||||||
<view style="display: flex;text-align: center;margin-top: 20px;">
|
<view style="display: flex;text-align: center;margin-top: 20px;">
|
||||||
<view style="width: 25%;">
|
<view style="width: 25%;">
|
||||||
@ -39,6 +57,7 @@
|
|||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view style="display: block;" v-if="isAdmin">
|
<view style="display: block;" v-if="isAdmin">
|
||||||
<view style="display: flex;text-align: center;margin-top: 20px;">
|
<view style="display: flex;text-align: center;margin-top: 20px;">
|
||||||
<view style="width: 25%;">
|
<view style="width: 25%;">
|
||||||
@ -76,28 +95,39 @@
|
|||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
|
<view v-if="debugMode">
|
||||||
|
<button @tap='debugCleanCache'>清除缓存</button>
|
||||||
|
<text decode="nbsp">{{ debugText }}</text>
|
||||||
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import Taro from '@tarojs/taro'
|
import Taro from '@tarojs/taro'
|
||||||
import { eventCenter, getCurrentInstance } from '@tarojs/taro'
|
import { eventCenter, getCurrentInstance } from '@tarojs/taro'
|
||||||
|
import ENUM from '../../utils/const.js'
|
||||||
|
|
||||||
import './index.css'
|
import './index.css'
|
||||||
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
setup() {
|
|
||||||
},
|
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
userInfo: null,
|
userInfo: null,
|
||||||
displayUsername: "",
|
displayUsername: "",
|
||||||
|
isVisitor: false,
|
||||||
isUser: false,
|
isUser: false,
|
||||||
isAdmin: false,
|
isAdmin: false,
|
||||||
|
debugMode: Taro.getApp().globalData.debugMode,
|
||||||
|
debugText: "",
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
eventCenter.once(getCurrentInstance().router.onShow, () => {
|
eventCenter.once(getCurrentInstance().router.onShow, () => {
|
||||||
console.log('onShow')
|
console.log('onShow')
|
||||||
|
console.log("ENUM", ENUM)
|
||||||
|
console.log("debugMode", this.debugMode)
|
||||||
|
|
||||||
this.userInfo = Taro.getStorageSync("userInfo");
|
this.userInfo = Taro.getStorageSync("userInfo");
|
||||||
this.displayUsername = this.userInfo?.username ?? "请登录";
|
this.displayUsername = this.userInfo?.username ?? "请登录";
|
||||||
if (!this.userInfo) {
|
if (!this.userInfo) {
|
||||||
@ -106,8 +136,30 @@ export default {
|
|||||||
url: '/pages/index/login'
|
url: '/pages/index/login'
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
this.isUser = this.userInfo.userType == "user";
|
const role = ENUM.user.role;
|
||||||
this.isAdmin = this.userInfo.userType == "admin";
|
this.isVisitor = [
|
||||||
|
role.VISITOR,
|
||||||
|
].includes(this.userInfo.role);
|
||||||
|
this.isUser = [
|
||||||
|
role.RESIDENTS_OWNER,
|
||||||
|
role.RESIDENTS_MEMBER,
|
||||||
|
role.RESIDENTS_TENENT,
|
||||||
|
].includes(this.userInfo.role);
|
||||||
|
this.isAdmin = [
|
||||||
|
role.ADMIN,
|
||||||
|
role.STAFF,
|
||||||
|
].includes(this.userInfo.role);
|
||||||
|
console.log(
|
||||||
|
"isVisitor", this.isVisitor,
|
||||||
|
"isUser", this.isUser,
|
||||||
|
"isAdmin", this.isAdmin
|
||||||
|
)
|
||||||
|
this.debugText = JSON.stringify({
|
||||||
|
"isVisitor": this.isVisitor,
|
||||||
|
"isUser": this.isUser,
|
||||||
|
"isAdmin": this.isAdmin,
|
||||||
|
"userInfo": this.userInfo
|
||||||
|
}, null, 4).replace(/[ ]/g, ' ')
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
@ -119,6 +171,19 @@ export default {
|
|||||||
Taro.switchTab({
|
Taro.switchTab({
|
||||||
url: '/pages/residents/code'
|
url: '/pages/residents/code'
|
||||||
})
|
})
|
||||||
|
},
|
||||||
|
debugCleanCache() {
|
||||||
|
Taro.clearStorage({
|
||||||
|
success: function () {
|
||||||
|
Taro.showToast({
|
||||||
|
title: "成功",
|
||||||
|
icon: 'success'
|
||||||
|
})
|
||||||
|
Taro.reLaunch({
|
||||||
|
url: '/pages/index/index'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
import Taro from '@tarojs/taro'
|
import Taro from '@tarojs/taro'
|
||||||
|
import md5 from 'blueimp-md5'
|
||||||
|
|
||||||
import './login.css'
|
import './login.css'
|
||||||
|
|
||||||
@ -42,40 +43,45 @@ export default {
|
|||||||
duration: 2000
|
duration: 2000
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
|
let passwordHash = md5(this.password);
|
||||||
Taro.request({
|
Taro.request({
|
||||||
url: `${this.baseUrl}/user/login`,
|
url: `${this.baseUrl}/user/login`,
|
||||||
|
method: "POST",
|
||||||
|
header: {
|
||||||
|
"Content-Type": "application/x-www-form-urlencoded" //用于post
|
||||||
|
},
|
||||||
data: {
|
data: {
|
||||||
username: this.username,
|
username: this.username,
|
||||||
password: this.password,
|
password: passwordHash,
|
||||||
},
|
},
|
||||||
success: function (d) {
|
success: function (d) {
|
||||||
let data = d.data;
|
let result = d.data;
|
||||||
if (data.code == 200) {
|
if (result.success) {
|
||||||
if (data.status == "success") {
|
Taro.setStorageSync("userInfo", result.data.userInfo);
|
||||||
Taro.setStorageSync("userInfo", data.userInfo);
|
console.log("userInfo", Taro.getStorageSync("userInfo"))
|
||||||
console.log("userInfo", Taro.getStorageSync("userInfo"))
|
Taro.showToast({
|
||||||
Taro.showToast({
|
title: "登录成功",
|
||||||
title: "登录成功",
|
icon: 'success',
|
||||||
icon: 'success',
|
success: function () {
|
||||||
success: function () {
|
Taro.redirectTo({
|
||||||
Taro.redirectTo({
|
url: '/pages/index/index'
|
||||||
url: '/pages/index/index'
|
})
|
||||||
})
|
}
|
||||||
}
|
})
|
||||||
})
|
|
||||||
} else {
|
|
||||||
Taro.showToast({
|
|
||||||
title: data.msg,
|
|
||||||
icon: 'error'
|
|
||||||
})
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
Taro.showToast({
|
Taro.showToast({
|
||||||
title: data.msg,
|
title: result.msg,
|
||||||
icon: 'error',
|
icon: 'error',
|
||||||
duration: 2000
|
duration: 2000
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
fail: function () {
|
||||||
|
Taro.showToast({
|
||||||
|
title: "请求失败",
|
||||||
|
icon: 'error',
|
||||||
|
duration: 2000
|
||||||
|
})
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
12
miniprogram/src/utils/const.js
Normal file
12
miniprogram/src/utils/const.js
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
module.exports = {
|
||||||
|
user: {
|
||||||
|
role: {
|
||||||
|
ADMIN: 0,
|
||||||
|
STAFF: 1,
|
||||||
|
RESIDENTS_OWNER: 2,
|
||||||
|
RESIDENTS_MEMBER: 3,
|
||||||
|
RESIDENTS_TENENT: 4,
|
||||||
|
VISITOR: 5
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user