提交 2ac385be 编写于 作者: 喷火的神灵's avatar 喷火的神灵 🎱

2023年6月10日18:01:19

上级 443f4713
......@@ -9,6 +9,7 @@
"version": "0.1.0",
"dependencies": {
"axios": "^1.4.0",
"cookie-session": "^2.0.0",
"core-js": "^3.8.3",
"dplayer": "^1.27.1",
"element-ui": "^2.15.13",
......@@ -4116,12 +4117,46 @@
"node": ">= 0.6"
}
},
"node_modules/cookie-session": {
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/cookie-session/-/cookie-session-2.0.0.tgz",
"integrity": "sha512-hKvgoThbw00zQOleSlUr2qpvuNweoqBtxrmx0UFosx6AGi9lYtLoA+RbsvknrEX8Pr6MDbdWAb2j6SnMn+lPsg==",
"dependencies": {
"cookies": "0.8.0",
"debug": "3.2.7",
"on-headers": "~1.0.2",
"safe-buffer": "5.2.1"
},
"engines": {
"node": ">= 0.10"
}
},
"node_modules/cookie-session/node_modules/debug": {
"version": "3.2.7",
"resolved": "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz",
"integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
"dependencies": {
"ms": "^2.1.1"
}
},
"node_modules/cookie-signature": {
"version": "1.0.6",
"resolved": "https://registry.npmmirror.com/cookie-signature/-/cookie-signature-1.0.6.tgz",
"integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
"dev": true
},
"node_modules/cookies": {
"version": "0.8.0",
"resolved": "https://registry.npmmirror.com/cookies/-/cookies-0.8.0.tgz",
"integrity": "sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==",
"dependencies": {
"depd": "~2.0.0",
"keygrip": "~1.1.0"
},
"engines": {
"node": ">= 0.8"
}
},
"node_modules/copy-webpack-plugin": {
"version": "9.1.0",
"resolved": "https://registry.npmmirror.com/copy-webpack-plugin/-/copy-webpack-plugin-9.1.0.tgz",
......@@ -4706,7 +4741,6 @@
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz",
"integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
"dev": true,
"engines": {
"node": ">= 0.8"
}
......@@ -6811,6 +6845,17 @@
"graceful-fs": "^4.1.6"
}
},
"node_modules/keygrip": {
"version": "1.1.0",
"resolved": "https://registry.npmmirror.com/keygrip/-/keygrip-1.1.0.tgz",
"integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==",
"dependencies": {
"tsscmp": "1.0.6"
},
"engines": {
"node": ">= 0.6"
}
},
"node_modules/kind-of": {
"version": "6.0.3",
"resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz",
......@@ -7456,8 +7501,7 @@
"node_modules/ms": {
"version": "2.1.2",
"resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
},
"node_modules/multicast-dns": {
"version": "7.2.5",
......@@ -7701,7 +7745,6 @@
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/on-headers/-/on-headers-1.0.2.tgz",
"integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
"dev": true,
"engines": {
"node": ">= 0.8"
}
......@@ -9099,8 +9142,7 @@
"node_modules/safe-buffer": {
"version": "5.2.1",
"resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz",
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
"dev": true
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
},
"node_modules/safer-buffer": {
"version": "2.1.2",
......@@ -9958,6 +10000,14 @@
"integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==",
"dev": true
},
"node_modules/tsscmp": {
"version": "1.0.6",
"resolved": "https://registry.npmmirror.com/tsscmp/-/tsscmp-1.0.6.tgz",
"integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==",
"engines": {
"node": ">=0.6.x"
}
},
"node_modules/type-check": {
"version": "0.4.0",
"resolved": "https://registry.npmmirror.com/type-check/-/type-check-0.4.0.tgz",
......@@ -14260,12 +14310,42 @@
"integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
"dev": true
},
"cookie-session": {
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/cookie-session/-/cookie-session-2.0.0.tgz",
"integrity": "sha512-hKvgoThbw00zQOleSlUr2qpvuNweoqBtxrmx0UFosx6AGi9lYtLoA+RbsvknrEX8Pr6MDbdWAb2j6SnMn+lPsg==",
"requires": {
"cookies": "0.8.0",
"debug": "3.2.7",
"on-headers": "~1.0.2",
"safe-buffer": "5.2.1"
},
"dependencies": {
"debug": {
"version": "3.2.7",
"resolved": "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz",
"integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
"requires": {
"ms": "^2.1.1"
}
}
}
},
"cookie-signature": {
"version": "1.0.6",
"resolved": "https://registry.npmmirror.com/cookie-signature/-/cookie-signature-1.0.6.tgz",
"integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
"dev": true
},
"cookies": {
"version": "0.8.0",
"resolved": "https://registry.npmmirror.com/cookies/-/cookies-0.8.0.tgz",
"integrity": "sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==",
"requires": {
"depd": "~2.0.0",
"keygrip": "~1.1.0"
}
},
"copy-webpack-plugin": {
"version": "9.1.0",
"resolved": "https://registry.npmmirror.com/copy-webpack-plugin/-/copy-webpack-plugin-9.1.0.tgz",
......@@ -14709,8 +14789,7 @@
"depd": {
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz",
"integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
"dev": true
"integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="
},
"destroy": {
"version": "1.2.0",
......@@ -16394,6 +16473,14 @@
"universalify": "^2.0.0"
}
},
"keygrip": {
"version": "1.1.0",
"resolved": "https://registry.npmmirror.com/keygrip/-/keygrip-1.1.0.tgz",
"integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==",
"requires": {
"tsscmp": "1.0.6"
}
},
"kind-of": {
"version": "6.0.3",
"resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz",
......@@ -16920,8 +17007,7 @@
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
},
"multicast-dns": {
"version": "7.2.5",
......@@ -17113,8 +17199,7 @@
"on-headers": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/on-headers/-/on-headers-1.0.2.tgz",
"integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
"dev": true
"integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA=="
},
"once": {
"version": "1.4.0",
......@@ -18154,8 +18239,7 @@
"safe-buffer": {
"version": "5.2.1",
"resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz",
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
"dev": true
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
},
"safer-buffer": {
"version": "2.1.2",
......@@ -18863,6 +18947,11 @@
"integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==",
"dev": true
},
"tsscmp": {
"version": "1.0.6",
"resolved": "https://registry.npmmirror.com/tsscmp/-/tsscmp-1.0.6.tgz",
"integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA=="
},
"type-check": {
"version": "0.4.0",
"resolved": "https://registry.npmmirror.com/type-check/-/type-check-0.4.0.tgz",
......
......@@ -9,6 +9,7 @@
},
"dependencies": {
"axios": "^1.4.0",
"cookie-session": "^2.0.0",
"core-js": "^3.8.3",
"dplayer": "^1.27.1",
"element-ui": "^2.15.13",
......
......@@ -68,6 +68,12 @@
</template>
<script>
import {
login, // 登录
vaildEmail, // 发送验证码
register, // 注册
} from "@/utils/option";
export default {
name: "login",
props: {
......@@ -109,7 +115,7 @@ export default {
code: '', // 验证码
email: '', // 邮箱
},
sessionId: "",
message: "",
// 验证规则
loginRules: {
username: [
......@@ -149,15 +155,16 @@ export default {
submitForm(formName) {
this.$refs[formName].validate((valid) => {
if (valid) {
// alert('submit!');
this.axios.post("/api/auth/register", {...this.ruleForm, sessionId:this.sessionId}, {headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}}).then(res => {
if (res.data.status == 200) {
this.$message.success(res.data.message)
// 注册
register({...this.ruleForm,sessionId: this.message}).then(res => {
if (res.status == 200) {
this.$message.success(res.message)
this.$emit('close');
} else {
this.$message.error(res.message)
}
})
} else {
console.log('error submit!!');
return false;
......@@ -168,23 +175,23 @@ export default {
resetForm(formName) {
this.$refs[formName].resetFields();
},
// 提交按钮
// 登录按钮
loginForm(formName) {
this.$refs[formName].validate((valid) => {
if (valid) {
alert('login!');
// 登录成功之后给弹窗隐藏
this.axios.post("/api/auth/login", this.login, {headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}}).then(res => {
if (res.data.status == 200) {
this.$message.success(res.data.message)
login(this.login).then(res => {
if (res.status == 200) {
this.$message.success(res.message)
this.$emit('close');
}
})
} else if(res.data.status == 401 ){
this.$message.error(res.data.message);
} else{
this.$message.error(res.data.message);
} else {
console.log('error login!!');
return false;
}
});
},
......@@ -204,23 +211,21 @@ export default {
setTimeout(() => {
this.doLoop(60);
}, 500);
this.axios.post("/api/auth/vaild-email",{email:this.ruleForm.email}, {headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}}).then(res => {
if (res.data.status == 200) {
// console.log(res.data.data);
this.sessionId = res.data.sessionId;
console.log(this.sessionId)
this.$message.success("邮件已发送")
}
// 发送验证码请求
vaildEmail({email:this.ruleForm.email}).then(res => {
if (res.status == 200) {
this.$message.success("邮件已发送");
this.message = res.message;
} else {
this.$message.error(res.message);
}
})
} else {
return false;
}
});
},
// 邮箱验证码的倒计时
// 手机验证码的倒计时
doLoop: function (seconds) {
seconds = seconds ? seconds : 60;
this.btnText = seconds + "s后获取";
......
import request from '@/utils/request'
/**
*
* @param {*} method 请求方法
* @param {*} url 请求地址
* @param {*} data post、put 请求的参数
* @param {*} params get、delete 请求的参数
* @param {*} config 请求配置,如headers等
*/
// 登录
export function login (params) {
return request({
method: 'post',
url: '/api/auth/login',
data: params
})
}
// 发送验证码
export function vaildEmail (params) {
return request({
method: 'post',
url: '/api/auth/vaild-email',
data: params
})
}
// 注册请求
export function register (params) {
return request({
method: 'post',
url: '/api/auth/register',
data: params
})
}
\ No newline at end of file
import axios from 'axios'
const instance = axios.create({
// API接口的base_url
baseURL: 'http://192.168.43.35:8089',
// 超时时间
timeout: 20000,
// headers配置
headers: {
// 'Content-Type': 'application/json;charset=utf-8',
'Content-Type': 'application/x-www-form-urlencoded',
// 'X-Requested-With': 'XMLHttpRequest'
}
})
instance.interceptors.request.use(
config => {
// 可以在发送请求前做一些对config的处理,例如给headers添加token
const token = sessionStorage.getItem('token')
if (token) {
config.headers['Authorization'] = token
}
return config
},
error => {
// 发送请求错误时做一些处理,例如抛出错误
return Promise.reject(error)
}
)
instance.interceptors.response.use(
response => {
// 对响应数据做些处理,例如验证token是否过期等
return response.data
},
error => {
// 对响应Error做些处理,例如判断响应状态码返回对应错误信息
// if (error.response) {
// switch (error.response.status) {
// case 400:
// error.message = '请求错误(400)'
// break
// case 401:
// error.message = '未授权,请重新登录(401)'
// break
// case 403:
// error.message = '拒绝访问(403)'
// break
// case 404:
// error.message = '请求出错(404)'
// break
// case 408:
// error.message = '请求超时(408)'
// break
// case 500:
// error.message = '服务器错误(500)'
// break
// case 501:
// error.message = '服务未实现(501)'
// break
// case 502:
// error.message = '网络错误(502)'
// break
// case 503:
// error.message = '服务不可用(503)'
// break
// case 504:
// error.message = '网络超时(504)'
// break
// case 505:
// error.message = 'HTTP版本不受支持(505)'
// break
// default:
// error.message = `连接出错(${error.response.status})!`
// }
// } else {
// error.message = '连接服务器失败!'
// }
return Promise.reject(error)
}
)
/**
*
* @param {*} method 请求方法
* @param {*} url 请求地址
* @param {*} data post、put 请求的参数
* @param {*} params get、delete 请求的参数
* @param {*} config 请求配置,如headers等
*/
function request ({ method, url, data = {}, params = {}, headers = {} }) {
return instance({
method,
url,
data,
params,
headers
})
}
export default request
......@@ -6,12 +6,15 @@ import jakarta.servlet.http.HttpSession;
import jakarta.validation.constraints.Pattern;
import org.hibernate.validator.constraints.Length;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.web.context.HttpSessionSecurityContextRepository;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
* 邮箱验证注册功能
*
......@@ -28,6 +31,9 @@ public class AuthorizeController {
@Autowired
AuthorizeService service;
/**
* 发送验证邮件
* 验证email是否符合正则表达式,若不符合则报错
......@@ -38,14 +44,14 @@ public class AuthorizeController {
@PostMapping("/vaild-email")
public RestBean<String> vaildateEmail(@Pattern(regexp = EMAIL_REGEX) @RequestParam("email") String email,
HttpSession session) {
String sessionId = session.getId();//String.valueOf(session);
System.out.println("vaild" + sessionId);
String sessionId = session.getId();
System.out.println("sessionId=" + sessionId);
String s = service.sendVaildateEmail(email, sessionId);
System.err.println(s); //打印返回的数值,便于观察错误
System.err.println("s=" + s); //打印返回的数值,便于观察错误
if (s == null) {
return RestBean.success("邮件已发送", sessionId);
return RestBean.success(sessionId);
} else {
return RestBean.failure(400, "邮件发送错误");
return RestBean.failure(400, s);
}
}
......@@ -57,8 +63,7 @@ public class AuthorizeController {
@Pattern(regexp = EMAIL_REGEX) @RequestParam("email") String email,
@Length(min = 1, max = 10) @RequestParam("nickname") String nickname,
@Length(min = 6, max = 6) @RequestParam("code") String code,
HttpSession session) {
String sessionId = session.getId();
String sessionId) {
String s = service.validateAndRegister(username, password, email, nickname, code, sessionId);
System.out.println("Reg :" + sessionId);
System.err.println(s); //打印返回的数值,便于观察错误
......@@ -66,6 +71,6 @@ public class AuthorizeController {
return RestBean.success("注册成功");
}
return RestBean.failure(400, "注册失败");
return RestBean.failure(400, s);
}
}
package cn.tedu.youbiliprojectbackend.controller;
import cn.tedu.youbiliprojectbackend.pojo.vo.AccountUserVO;
import cn.tedu.youbiliprojectbackend.response.RestBean;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.SessionAttribute;
@RestController
@RequestMapping
@RequestMapping("/api/user")
public class UserController {
@GetMapping("/me")
public RestBean<AccountUserVO> me(@SessionAttribute("account") AccountUserVO user){
return RestBean.success(user);
}
}
package cn.tedu.youbiliprojectbackend.mapper;
import cn.tedu.youbiliprojectbackend.pojo.entity.Account;
import cn.tedu.youbiliprojectbackend.pojo.vo.AccountUserVO;
import org.springframework.stereotype.Repository;
import java.util.Date;
@Repository
public interface UserMapper {
......@@ -14,5 +13,10 @@ public interface UserMapper {
//登录时更新最后登录时间
int updateLastLoginDate(String username);
//注册
int insertUser(String username,String password,String Email,String nickname);
//给前端用户数据
AccountUserVO selectUserByuserNameOrEmail(String text);
}
package cn.tedu.youbiliprojectbackend.pojo.vo;
import lombok.Data;
@Data
public class AccountUserVO {
private int UserID;
private String username;
private String email;
private String Nickname;
}
\ No newline at end of file
......@@ -16,20 +16,13 @@ public class RestBean<T> {
private int status;
private boolean success;
private T message;
private T sessionId;
private RestBean(int status, boolean success, T message) {
this.status = status;
this.success = success;
this.message = message;
}
//返回session
private RestBean(int status, boolean success,T message,T session){
this.status = status;
this.success = success;
this.message = message;
this.sessionId=session;
}
public static <T> RestBean<T> success() {
return new RestBean<>(200, true, null);
......@@ -39,10 +32,6 @@ public class RestBean<T> {
return new RestBean<>(200, true, data);
}
public static <T> RestBean<T> success(T data,T session) {
return new RestBean<>(200, true, data, session);
}
public static <T> RestBean<T> failure(int status) {
return new RestBean<>(status, false, null);
}
......
package cn.tedu.youbiliprojectbackend.securityConfig;
import cn.tedu.youbiliprojectbackend.mapper.UserMapper;
import cn.tedu.youbiliprojectbackend.pojo.vo.AccountUserVO;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContext;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.User;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
@Component
public class AuthorizeInterceptor implements HandlerInterceptor {
@Autowired
UserMapper mapper;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
SecurityContext context = SecurityContextHolder.getContext();
Authentication authentication = context.getAuthentication();
User user = (User)authentication.getPrincipal();
String username = user.getUsername();
AccountUserVO account = mapper.selectUserByuserNameOrEmail(username);
request.getSession().setAttribute("account", account);
return true;
}
}
package cn.tedu.youbiliprojectbackend.securityConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class WebConfiguration implements WebMvcConfigurer {
@Autowired
AuthorizeInterceptor interceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry
.addInterceptor(interceptor)
.addPathPatterns("/**")
.excludePathPatterns("/api/auth/**");
}
}
......@@ -83,7 +83,6 @@ public class AuthorizeServiceImpl implements AuthorizeService {
return User
.withUsername(account.getUserName())
.password(account.getPassword())
.authorities(String.valueOf(account.getUserID()))
.roles("user")
.build();
......@@ -118,6 +117,7 @@ public class AuthorizeServiceImpl implements AuthorizeService {
System.err.println("sendVaildateEmail : " + key);
System.err.println("email = " + email + ", sessionId = " + sessionId);
if (Boolean.TRUE.equals(template.hasKey(key))) { //判断这个hasKey是否存在
Long expire = Optional.ofNullable(template.getExpire(key, TimeUnit.SECONDS)).orElse(0L); //获取key的过期时间,单位是秒,如果没有过期时间,返回0
System.out.println(expire);
......
......@@ -28,4 +28,9 @@
WHERE Username = #{text}
OR Email = #{text}
</select>
<select id="selectUserByuserNameOrEmail" resultType="cn.tedu.youbiliprojectbackend.pojo.vo.AccountUserVO">
SELECT UserID, Username, Nickname,Email,AccountLevel,Fans,Follows,VideoCount,TotalLikes
FROM users
WHERE Username=#{text} OR Email=#{text}
</select>
</mapper>
\ No newline at end of file
package cn.tedu.youbiliprojectbackend;
import cn.tedu.youbiliprojectbackend.mapper.UserMapper;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
@SpringBootTest
......@@ -13,4 +16,12 @@ class YoubiliProjectBackendApplicationTests {
System.out.println(encoder.encode("1234567"));
}
@Autowired
UserMapper mapper;
@Test
void TestMapper(){
System.out.println(mapper.selectUserByuserNameOrEmail("张三"));
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册