完善注册信息前端内容
This commit is contained in:
parent
0efbc830ae
commit
f3eadc6477
|
@ -44,15 +44,8 @@ public class RegisterServiceImpl implements RegisterService {
|
||||||
map.put("error_message", "用户名过长");
|
map.put("error_message", "用户名过长");
|
||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
if (password.length() > 100 || confirmedPassword.length() > 100) {
|
|
||||||
map.put("error_message", "密码过长");
|
|
||||||
return map;
|
|
||||||
}
|
|
||||||
// 密码验证是 String 类型比较,应该用 equals() 方法
|
|
||||||
if (!confirmedPassword.equals(password)) {
|
|
||||||
map.put("error_message", "两次密码输入不一致");
|
|
||||||
return map;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
查询数据库里是否有用户名 this.username 已存在的用户,并将结果存入 users 中,
|
查询数据库里是否有用户名 this.username 已存在的用户,并将结果存入 users 中,
|
||||||
|
@ -65,6 +58,17 @@ public class RegisterServiceImpl implements RegisterService {
|
||||||
map.put("error_message", "用户名已存在");
|
map.put("error_message", "用户名已存在");
|
||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
|
// 密码验证是 String 类型比较,应该用 equals() 方法
|
||||||
|
else if (!confirmedPassword.equals(password)) {
|
||||||
|
map.put("error_message", "两次密码输入不一致");
|
||||||
|
return map;
|
||||||
|
} else if (password.length() < 6) {
|
||||||
|
map.put("error_message", "密码不能少于6位");
|
||||||
|
return map;
|
||||||
|
} else if (password.length() > 100) {
|
||||||
|
map.put("error_message", "密码过长");
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
|
||||||
// 异常情况判断结束,开始将合法用户注册信息注入数据库
|
// 异常情况判断结束,开始将合法用户注册信息注入数据库
|
||||||
// 对密码进行加密
|
// 对密码进行加密
|
||||||
|
@ -72,10 +76,10 @@ public class RegisterServiceImpl implements RegisterService {
|
||||||
// 默认头像
|
// 默认头像
|
||||||
String photo = "https://cdn.acwing.com/media/user/profile/photo/253652_lg_e3d8435b66.jpg";
|
String photo = "https://cdn.acwing.com/media/user/profile/photo/253652_lg_e3d8435b66.jpg";
|
||||||
// id 是数据库自增,这里生成新用户只需要将 id 参数写为 null 即可
|
// id 是数据库自增,这里生成新用户只需要将 id 参数写为 null 即可
|
||||||
User user = new User(null,username,encodedPassword,photo);
|
User user = new User(null, username, encodedPassword, photo);
|
||||||
userMapper.insert(user);
|
userMapper.insert(user);
|
||||||
|
|
||||||
map.put("error_message","成功注册");
|
map.put("error_message", "successRegister");
|
||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -58,7 +58,8 @@
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<ul class="navbar-nav" v-else>
|
<!-- 当没有拉取信息时,再去展示登录注册内容 -->
|
||||||
|
<ul class="navbar-nav" v-else-if="!$store.state.user.pulling_info">
|
||||||
<!-- 下拉菜单样式 -->
|
<!-- 下拉菜单样式 -->
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<router-link
|
<router-link
|
||||||
|
|
|
@ -7,6 +7,7 @@ export default {
|
||||||
photo: "",
|
photo: "",
|
||||||
token: "",
|
token: "",
|
||||||
is_login: false,
|
is_login: false,
|
||||||
|
pulling_info: true, // 当前是否在获取信息
|
||||||
},
|
},
|
||||||
getters: {},
|
getters: {},
|
||||||
// 同步事件
|
// 同步事件
|
||||||
|
@ -30,6 +31,10 @@ export default {
|
||||||
state.token = "";
|
state.token = "";
|
||||||
state.is_login = false;
|
state.is_login = false;
|
||||||
},
|
},
|
||||||
|
// 更新信息拉取状态
|
||||||
|
updatePullingInfo(state, pulling_info) {
|
||||||
|
state.pulling_info = pulling_info;
|
||||||
|
},
|
||||||
},
|
},
|
||||||
// 异步事件
|
// 异步事件
|
||||||
actions: {
|
actions: {
|
||||||
|
@ -43,12 +48,14 @@ export default {
|
||||||
password: data.password,
|
password: data.password,
|
||||||
},
|
},
|
||||||
success(resp) {
|
success(resp) {
|
||||||
// console.log(resp.token, "\n成功了\n", resp.error_message);
|
// console.log(resp.token, "\n成功了\n", resp.error_message);
|
||||||
if (resp.error_message === "success") {
|
if (resp.error_message === "success") {
|
||||||
|
// 将登陆成功的信息存到 localStorage 中,用于浏览器的登录信息持久化(避免刷新后登录状态丢失)
|
||||||
|
localStorage.setItem("jwt_token", resp.token);
|
||||||
/*
|
/*
|
||||||
登录成功则将获取到的 resp 里的 token 传给 mutations 里的
|
登录成功则将获取到的 resp 里的 token 传给 mutations 里的
|
||||||
updateToken 方法,对用户 token 信息进行更新
|
updateToken 方法,对用户 token 信息进行更新
|
||||||
*/
|
*/
|
||||||
context.commit("updateToken", resp.token);
|
context.commit("updateToken", resp.token);
|
||||||
data.success(resp);
|
data.success(resp);
|
||||||
} else {
|
} else {
|
||||||
|
@ -60,6 +67,30 @@ export default {
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// 注册函数
|
||||||
|
register(context, data) {
|
||||||
|
$.ajax({
|
||||||
|
url: "http://localhost:3000/user/account/register/",
|
||||||
|
type: "POST",
|
||||||
|
data: {
|
||||||
|
username: data.username,
|
||||||
|
password: data.password,
|
||||||
|
confirmedPassword: data.confirmedPassword,
|
||||||
|
},
|
||||||
|
success(resp) {
|
||||||
|
if (resp.error_message === "successRegister") {
|
||||||
|
data.success(resp);
|
||||||
|
} else {
|
||||||
|
data.error(resp);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
error(resp) {
|
||||||
|
data.error(resp);
|
||||||
|
},
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
// 获取登录成功后的用户信息
|
// 获取登录成功后的用户信息
|
||||||
getinfo(context, data) {
|
getinfo(context, data) {
|
||||||
$.ajax({
|
$.ajax({
|
||||||
|
@ -86,6 +117,8 @@ export default {
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
logout(context) {
|
logout(context) {
|
||||||
|
// 退出时,删除 localStorage 里的持久化信息
|
||||||
|
localStorage.removeItem("jwt_token");
|
||||||
context.commit("logout");
|
context.commit("logout");
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<ContentBase>
|
<!-- !$store.state.user.pulling_info 正在拉取信息时,不展示登录状态 -->
|
||||||
|
<ContentBase v-if="!$store.state.user.pulling_info">
|
||||||
<!-- justify-content-md-center 用于居中 -->
|
<!-- justify-content-md-center 用于居中 -->
|
||||||
<div class="row justify-content-md-center">
|
<div class="row justify-content-md-center">
|
||||||
<div class="col-3">
|
<div class="col-3">
|
||||||
|
@ -10,23 +11,11 @@
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<label for="username" class="form-label">用户名</label>
|
<label for="username" class="form-label">用户名</label>
|
||||||
<!-- 使用 v-model 来绑定函数里的 username 变量 -->
|
<!-- 使用 v-model 来绑定函数里的 username 变量 -->
|
||||||
<input
|
<input v-model="username" type="text" class="form-control" id="username" placeholder="请输入用户名" />
|
||||||
v-model="username"
|
|
||||||
type="text"
|
|
||||||
class="form-control"
|
|
||||||
id="username"
|
|
||||||
placeholder="请输入用户名"
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<label for="password" class="form-label">密码</label>
|
<label for="password" class="form-label">密码</label>
|
||||||
<input
|
<input v-model="password" type="password" class="form-control" id="password" placeholder="请输入密码" />
|
||||||
v-model="password"
|
|
||||||
type="password"
|
|
||||||
class="form-control"
|
|
||||||
id="password"
|
|
||||||
placeholder="请输入密码"
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="error-message">{{ error_message }}</div>
|
<div class="error-message">{{ error_message }}</div>
|
||||||
<!-- float-start 左布局, float-end 右布局 -->
|
<!-- float-start 左布局, float-end 右布局 -->
|
||||||
|
@ -54,6 +43,27 @@ export default {
|
||||||
let password = ref("");
|
let password = ref("");
|
||||||
let error_message = ref("");
|
let error_message = ref("");
|
||||||
|
|
||||||
|
|
||||||
|
// 获取 localStorage 里存的 jwt_token
|
||||||
|
const jwt_token = localStorage.getItem("jwt_token");
|
||||||
|
// 如果 jwt_token 存在,则存下来,并直接从云端根据 token 获取用户信息
|
||||||
|
if (jwt_token) {
|
||||||
|
store.commit("updateToken", jwt_token);
|
||||||
|
store.dispatch("getinfo", {
|
||||||
|
// 本地 localStorage 成功获取到 token 信息,则直接跳转到首页
|
||||||
|
success() {
|
||||||
|
router.push({ name: "home" });
|
||||||
|
store.commit("updatePullingInfo", false);
|
||||||
|
},
|
||||||
|
error() {
|
||||||
|
// 信息拉取结束
|
||||||
|
store.commit("updatePullingInfo", false);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
store.commit("updatePullingInfo", false);
|
||||||
|
}
|
||||||
|
|
||||||
const login = () => {
|
const login = () => {
|
||||||
error_message.value = "";
|
error_message.value = "";
|
||||||
// 如果触发,则调用 store/user.js 里定义的 login 函数
|
// 如果触发,则调用 store/user.js 里定义的 login 函数
|
||||||
|
|
|
@ -1,15 +1,91 @@
|
||||||
<template>
|
<template>
|
||||||
<ContentBase>注册</ContentBase>
|
<ContentBase>
|
||||||
|
<!-- justify-content-md-center 用于居中 -->
|
||||||
|
<div class="row justify-content-md-center">
|
||||||
|
<div class="col-3">
|
||||||
|
<!-- 定义注册表单 @submita="login" 表示表单提交时触发 login 函数; submit.prevent 用于阻止 submit 的默认提交行为,
|
||||||
|
而是调用自己定义的 login 函数来实现提交行为
|
||||||
|
-->
|
||||||
|
<form @submit.prevent="register">
|
||||||
|
<div class="mb-3">
|
||||||
|
<label for="username" class="form-label">用户名</label>
|
||||||
|
<!-- 使用 v-model 来绑定函数里的 username 变量 -->
|
||||||
|
<input v-model="username" type="text" class="form-control" id="username" placeholder="请输入用户名" />
|
||||||
|
</div>
|
||||||
|
<div class="mb-3">
|
||||||
|
<label for="password" class="form-label">密码</label>
|
||||||
|
<input v-model="password" type="password" class="form-control" id="password" placeholder="请输入密码" />
|
||||||
|
</div>
|
||||||
|
<div class="mb-3">
|
||||||
|
<label for="confirmed-password" class="form-label">确认密码</label>
|
||||||
|
<input v-model="confirmedPassword" type="password" class="form-control" id="confirmed-password"
|
||||||
|
placeholder="请再次输入密码" />
|
||||||
|
</div>
|
||||||
|
<div class="error-message">{{ error_message }}</div>
|
||||||
|
<!-- float-start 左布局, float-end 右布局 -->
|
||||||
|
<!-- type="submit" 提交类型 -->
|
||||||
|
<button type="submit" class="btn btn-primary btn-sm float-center">注册</button>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</ContentBase>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import ContentBase from "../../../components/ContentBase.vue";
|
import ContentBase from "../../../components/ContentBase.vue";
|
||||||
|
// import $ from "jquery";
|
||||||
|
import { ref } from "vue";
|
||||||
|
import { useStore } from "vuex";
|
||||||
|
import router from "../../../router/index";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
ContentBase,
|
ContentBase,
|
||||||
},
|
},
|
||||||
|
setup: () => {
|
||||||
|
const store = useStore();
|
||||||
|
let username = ref("");
|
||||||
|
let password = ref("");
|
||||||
|
let confirmedPassword = ref("");
|
||||||
|
let error_message = ref("");
|
||||||
|
|
||||||
|
const register = () => {
|
||||||
|
error_message.value = "";
|
||||||
|
// store->user->register() 注册函数调用
|
||||||
|
store.dispatch("register", {
|
||||||
|
username: username.value,
|
||||||
|
password: password.value,
|
||||||
|
confirmedPassword: confirmedPassword.value,
|
||||||
|
success() {
|
||||||
|
// console.log(resp);
|
||||||
|
router.push({ name: "user_account_login" });
|
||||||
|
},
|
||||||
|
error(resp) {
|
||||||
|
// console.log(resp);
|
||||||
|
error_message.value = resp.error_message;
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
username,
|
||||||
|
password,
|
||||||
|
confirmedPassword,
|
||||||
|
error_message,
|
||||||
|
register,
|
||||||
|
};
|
||||||
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped></style>
|
<style scoped>
|
||||||
|
div.error-message {
|
||||||
|
color: red;
|
||||||
|
}
|
||||||
|
|
||||||
|
button {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
Loading…
Reference in New Issue