commit f64b153df628f0cebaeaf6a3090e229b159a2dd1 Author: Cool <747682928@qq.com> Date: Tue Nov 14 18:19:47 2023 +0800 初始化项目 diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..5ba951a --- /dev/null +++ b/pom.xml @@ -0,0 +1,79 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 2.7.17 + + + com.example + chat + 0.0.1-SNAPSHOT + chat + chat + + 1.8 + + + + org.springframework.boot + spring-boot-starter-web + + + com.auth0 + java-jwt + 3.8.3 + + + org.mybatis + mybatis + 3.5.13 + + + junit + junit + 4.13.2 + + + org.projectlombok + lombok + 1.18.26 + + + mysql + mysql-connector-java + 8.0.33 + + + org.springframework.boot + spring-boot-starter-data-redis + + + + com.sun.mail + javax.mail + 1.6.2 + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + org.projectlombok + lombok + + + + + + + + diff --git a/src/main/java/com/example/chat/ChatApplication.java b/src/main/java/com/example/chat/ChatApplication.java new file mode 100644 index 0000000..adde24e --- /dev/null +++ b/src/main/java/com/example/chat/ChatApplication.java @@ -0,0 +1,15 @@ +package com.example.chat; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + + +@SpringBootApplication +public class ChatApplication { + + public static void main(String[] args) { + + SpringApplication.run(ChatApplication.class, args); + } + +} diff --git a/src/main/java/com/example/chat/controller/LoginController.java b/src/main/java/com/example/chat/controller/LoginController.java new file mode 100644 index 0000000..8d5e868 --- /dev/null +++ b/src/main/java/com/example/chat/controller/LoginController.java @@ -0,0 +1,58 @@ +package com.example.chat.controller; + +import com.example.chat.entity.Email; +import com.example.chat.entity.Result; +import com.example.chat.entity.User; +import com.example.chat.service.CodeCheck; +import com.example.chat.service.LoginService; +import com.example.chat.service.mail.MailUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.io.IOException; + +@CrossOrigin +@RestController +public class LoginController { + @Autowired + LoginService login; + @Resource + CodeCheck codeCheck; + @Resource + MailUtil mailUtil; + @PostMapping("/login") + public Result Login(@RequestBody User user) throws IOException { + Result result = new Result(); + if (login.LoginCheck(user)!=null) { + + result.setStatus(200); + result.setResponseStr(login.LoginCheck(user)); + + } else { + result.setStatus(200); + result.setResponseStr("No"); + } + return result; + } + + @PostMapping("/register") + public Result Register(@RequestBody User user) throws IOException { + System.out.println("被调用了"); + System.out.println("user是啥"+user); + Result result = new Result(); + result.setStatus(login.Register(user)); + return result; + } + + @PostMapping("/checkCode") + public boolean checkCode(@RequestBody Email email) { + System.out.println(email); + return codeCheck.CheckCode(email.getEmail(),email.getCode()); + } + @PostMapping("/sendCode") + public void sendCode(@RequestBody Email email){ + System.out.println(email.getEmail()); + mailUtil.sendMail(email.getEmail()); + } +} diff --git a/src/main/java/com/example/chat/dao/Login.java b/src/main/java/com/example/chat/dao/Login.java new file mode 100644 index 0000000..7fcec4f --- /dev/null +++ b/src/main/java/com/example/chat/dao/Login.java @@ -0,0 +1,47 @@ +package com.example.chat.dao; + +import com.example.chat.entity.User; +import com.example.chat.dao.mybatis.MybatisSingleton; +import org.apache.ibatis.session.SqlSession; +import org.springframework.stereotype.Repository; + + +import java.io.IOException; + +@Repository +public class Login implements UserTable { + + @Override + public void addUser(User user) throws IOException { + SqlSession sqlSession=MybatisSingleton.getSqlSessionFactory().openSession(); + sqlSession.insert("dao.Login.addUser",user); + sqlSession.commit(); + sqlSession.close(); + } + + @Override + public void delUser(User user) { + + } + + @Override + public void updateUser(User oldUser,User newUser) { + + } + + @Override + public User getUser(User user) throws IOException { + SqlSession sqlSession= MybatisSingleton.getSqlSessionFactory().openSession(); + User returnUser=sqlSession.selectOne("dao.Login.getUser",user); + sqlSession.close(); + return returnUser; + } + + @Override + public User emailCheck(User user) throws IOException { + SqlSession sqlSession=MybatisSingleton.getSqlSessionFactory().openSession(); + User returnUser=sqlSession.selectOne("dao.Login.emailCheck",user); + sqlSession.close(); + return returnUser; + } +} diff --git a/src/main/java/com/example/chat/dao/Test01.java b/src/main/java/com/example/chat/dao/Test01.java new file mode 100644 index 0000000..9b1949a --- /dev/null +++ b/src/main/java/com/example/chat/dao/Test01.java @@ -0,0 +1,26 @@ +package com.example.chat.dao; + +import com.example.chat.dao.mybatis.MybatisSingleton; +import com.example.chat.entity.User; +import org.apache.ibatis.session.SqlSession; +import org.springframework.boot.CommandLineRunner; +import org.springframework.stereotype.Component; +import java.util.concurrent.TimeUnit; +@Component +public class Test01 implements CommandLineRunner { + + + @Override + public void run(String... args) throws Exception { + while (true){ + SqlSession sqlSession= MybatisSingleton.getSqlSessionFactory().openSession(); + User user=sqlSession.selectOne("dao.Login.getUser","123"); + if (user!=null){ + System.out.println(user); + } + sqlSession.close(); + System.out.println("sleep"); + TimeUnit.HOURS.sleep(2); + } + } +} diff --git a/src/main/java/com/example/chat/dao/UserTable.java b/src/main/java/com/example/chat/dao/UserTable.java new file mode 100644 index 0000000..c0e696b --- /dev/null +++ b/src/main/java/com/example/chat/dao/UserTable.java @@ -0,0 +1,17 @@ +package com.example.chat.dao; + +import com.example.chat.entity.User; +import org.springframework.stereotype.Repository; + +import java.io.IOException; +@Repository +public interface UserTable { + public abstract void addUser(User user) throws IOException; + + public abstract void delUser(User user); + + public abstract void updateUser(User oldUser,User newUser); + + public abstract User getUser(User user) throws IOException; + public abstract User emailCheck(User user) throws IOException; +} diff --git a/src/main/java/com/example/chat/dao/mybatis/MybatisSingleton.java b/src/main/java/com/example/chat/dao/mybatis/MybatisSingleton.java new file mode 100644 index 0000000..366256d --- /dev/null +++ b/src/main/java/com/example/chat/dao/mybatis/MybatisSingleton.java @@ -0,0 +1,23 @@ +package com.example.chat.dao.mybatis; + +import org.apache.ibatis.io.Resources; +import org.apache.ibatis.session.SqlSessionFactory; +import org.apache.ibatis.session.SqlSessionFactoryBuilder; + +import java.io.IOException; + +public class MybatisSingleton { + private static SqlSessionFactory sqlSessionFactory; + + private MybatisSingleton(){ + + } + public static SqlSessionFactory getSqlSessionFactory() throws IOException { + if(sqlSessionFactory==null){ + sqlSessionFactory=new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader("mybatis.xml")); + } + + return sqlSessionFactory; + } + +} diff --git a/src/main/java/com/example/chat/dao/redis/CodeRedis.java b/src/main/java/com/example/chat/dao/redis/CodeRedis.java new file mode 100644 index 0000000..0e17455 --- /dev/null +++ b/src/main/java/com/example/chat/dao/redis/CodeRedis.java @@ -0,0 +1,30 @@ +package com.example.chat.dao.redis; + +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.data.redis.core.ValueOperations; +import org.springframework.stereotype.Repository; + +import javax.annotation.Resource; +import java.util.concurrent.TimeUnit; + +@Repository +public class CodeRedis implements RedisUtil { + @Resource + StringRedisTemplate stringRedisTemplate; + + @Override + public void addRedis(String account, String code) { + if (account != null && code != null) { + ValueOperations valueOperations = stringRedisTemplate.opsForValue(); + valueOperations.set(account, code, 60, TimeUnit.SECONDS); + } + } + @Override + public String getRedis(String account) { + return stringRedisTemplate.opsForValue().get(account); + } + @Override + public void delRedis(String account) { + + } +} diff --git a/src/main/java/com/example/chat/dao/redis/RedisUtil.java b/src/main/java/com/example/chat/dao/redis/RedisUtil.java new file mode 100644 index 0000000..834c9c0 --- /dev/null +++ b/src/main/java/com/example/chat/dao/redis/RedisUtil.java @@ -0,0 +1,11 @@ +package com.example.chat.dao.redis; + +import org.springframework.stereotype.Repository; + +@Repository +public interface RedisUtil { + public abstract void addRedis(String key,String value); + public abstract void delRedis(String key); + public abstract String getRedis(String key); + +} diff --git a/src/main/java/com/example/chat/dao/redis/TokenRedis.java b/src/main/java/com/example/chat/dao/redis/TokenRedis.java new file mode 100644 index 0000000..2ee2519 --- /dev/null +++ b/src/main/java/com/example/chat/dao/redis/TokenRedis.java @@ -0,0 +1,30 @@ +package com.example.chat.dao.redis; + +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.data.redis.core.ValueOperations; +import org.springframework.stereotype.Repository; + +import javax.annotation.Resource; +import java.util.concurrent.TimeUnit; + +@Repository +public class TokenRedis implements RedisUtil{ + + @Resource + StringRedisTemplate stringRedisTemplate; + @Override + public void addRedis(String key, String value) { + ValueOperations valueOperations=stringRedisTemplate.opsForValue(); + valueOperations.set(key,value,60, TimeUnit.MINUTES); + } + + @Override + public void delRedis(String key) { + + } + + @Override + public String getRedis(String key) { + return stringRedisTemplate.opsForValue().get(key); + } +} diff --git a/src/main/java/com/example/chat/entity/Email.java b/src/main/java/com/example/chat/entity/Email.java new file mode 100644 index 0000000..6e97a66 --- /dev/null +++ b/src/main/java/com/example/chat/entity/Email.java @@ -0,0 +1,50 @@ +package com.example.chat.entity; + +public class Email { + private String email; + private String code; + + public Email() { + } + + public Email(String email, String code) { + this.email = email; + this.code = code; + } + + /** + * 获取 + * @return email + */ + public String getEmail() { + return email; + } + + /** + * 设置 + * @param email + */ + public void setEmail(String email) { + this.email = email; + } + + /** + * 获取 + * @return code + */ + public String getCode() { + return code; + } + + /** + * 设置 + * @param code + */ + public void setCode(String code) { + this.code = code; + } + + public String toString() { + return "Email{email = " + email + ", code = " + code + "}"; + } +} diff --git a/src/main/java/com/example/chat/entity/Result.java b/src/main/java/com/example/chat/entity/Result.java new file mode 100644 index 0000000..923838a --- /dev/null +++ b/src/main/java/com/example/chat/entity/Result.java @@ -0,0 +1,70 @@ +package com.example.chat.entity; + +public class Result { + private int status; + private String responseStr; + private Object data; + + public Result() { + } + + public Result(int status, String responseStr, Object data) { + this.status = status; + this.responseStr = responseStr; + this.data = data; + } + public Result(int status){ + this.status=status; + } + /** + * 获取 + * @return status + */ + public int getStatus() { + return status; + } + + /** + * 设置 + * @param status + */ + public void setStatus(int status) { + this.status = status; + } + + /** + * 获取 + * @return responseStr + */ + public String getResponseStr() { + return responseStr; + } + + /** + * 设置 + * @param responseStr + */ + public void setResponseStr(String responseStr) { + this.responseStr = responseStr; + } + + /** + * 获取 + * @return data + */ + public Object getData() { + return data; + } + + /** + * 设置 + * @param data + */ + public void setData(Object data) { + this.data = data; + } + + public String toString() { + return "Result{status = " + status + ", responseStr = " + responseStr + ", data = " + data + "}"; + } +} diff --git a/src/main/java/com/example/chat/entity/User.java b/src/main/java/com/example/chat/entity/User.java new file mode 100644 index 0000000..d02cc6a --- /dev/null +++ b/src/main/java/com/example/chat/entity/User.java @@ -0,0 +1,88 @@ +package com.example.chat.entity; + +public class User { + private String username; + private String password; + private String account; + + private String email; + + + public User() { + } + + public User(String username, String password, String account, String email) { + this.username = username; + this.password = password; + this.account = account; + this.email = email; + } + + /** + * 获取 + * @return username + */ + public String getUsername() { + return username; + } + + /** + * 设置 + * @param username + */ + public void setUsername(String username) { + this.username = username; + } + + /** + * 获取 + * @return password + */ + public String getPassword() { + return password; + } + + /** + * 设置 + * @param password + */ + public void setPassword(String password) { + this.password = password; + } + + /** + * 获取 + * @return account + */ + public String getAccount() { + return account; + } + + /** + * 设置 + * @param account + */ + public void setAccount(String account) { + this.account = account; + } + + /** + * 获取 + * @return email + */ + public String getEmail() { + return email; + } + + /** + * 设置 + * @param email + */ + public void setEmail(String email) { + this.email = email; + } + + public String toString() { + return "User{username = " + username + ", password = " + password + ", account = " + account + ", email = " + email + "}"; + } +} diff --git a/src/main/java/com/example/chat/jwt/InterceptorConfig.java b/src/main/java/com/example/chat/jwt/InterceptorConfig.java new file mode 100644 index 0000000..b2a1580 --- /dev/null +++ b/src/main/java/com/example/chat/jwt/InterceptorConfig.java @@ -0,0 +1,41 @@ +package com.example.chat.jwt; + +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.CorsRegistry; +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +import java.util.ArrayList; + +@Configuration +public class InterceptorConfig implements WebMvcConfigurer { + TokenInterceptor tokenInterceptor; + + public InterceptorConfig(TokenInterceptor tokenInterceptor) {//构造函数 + this.tokenInterceptor = tokenInterceptor; + } + + @Override + public void addInterceptors(InterceptorRegistry registry) {//配置拦截器 + System.out.println("拦截器被配置了"); + ArrayList excludePath = new ArrayList<>(); + excludePath.add("/login");//登录 + excludePath.add("/checkCode"); + excludePath.add("/sendCode"); + excludePath.add("/register");//注册 + excludePath.add("/register"); + registry.addInterceptor(tokenInterceptor)//注册拦截器 + .addPathPatterns("/**")//拦截所有请求 + .excludePathPatterns(excludePath);//添加拦截白名单 + WebMvcConfigurer.super.addInterceptors(registry);//调用父接口 + } + + @Override + public void addCorsMappings(CorsRegistry registry) { + registry.addMapping("/**") + .allowCredentials(true)//允许携带cookie + .allowedMethods("GET", "POST", "DELETE", "PUT", "PATCH", "OPTIONS", "HEAD")//允许访问的方法 + .allowedOriginPatterns("*")//允许的跨域访问地址 + .maxAge(3600 * 24);//options缓存时间 + } +} diff --git a/src/main/java/com/example/chat/jwt/JWTUtil.java b/src/main/java/com/example/chat/jwt/JWTUtil.java new file mode 100644 index 0000000..0968b7f --- /dev/null +++ b/src/main/java/com/example/chat/jwt/JWTUtil.java @@ -0,0 +1,34 @@ +package com.example.chat.jwt; + +import com.auth0.jwt.JWT; +import com.auth0.jwt.JWTVerifier; +import com.auth0.jwt.algorithms.Algorithm; +import com.auth0.jwt.interfaces.DecodedJWT; +import org.springframework.stereotype.Component; + + +public class JWTUtil { + private static final String tokenPassword = "uziCjb"; + public static String sign(String username) {//用用户名作为被加密的对象 + String token; + + token = JWT.create()//生成jwt令牌,加密过程 + .withIssuer("llh") + .withClaim("username", username) + .sign(Algorithm.HMAC256(tokenPassword)); + return token;//返回加密后的token + } + public static String verify(String token){ + JWTVerifier jwtVerifier=JWT.require(Algorithm.HMAC256(tokenPassword)).withIssuer("llh").build();//构建一个jwt解码器 + DecodedJWT jwtToken=jwtVerifier.verify(token);//解码 + if(token.isEmpty()){//若token为空则返回false拦截 + return null; + } + else { + System.out.println("认证通过:"); + System.out.println("issuer: " + jwtToken.getIssuer()); + System.out.println("username: " + jwtToken.getClaim("username").asString()); + return jwtToken.getClaim("username").asString(); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/example/chat/jwt/TokenInterceptor.java b/src/main/java/com/example/chat/jwt/TokenInterceptor.java new file mode 100644 index 0000000..9b2735c --- /dev/null +++ b/src/main/java/com/example/chat/jwt/TokenInterceptor.java @@ -0,0 +1,57 @@ +package com.example.chat.jwt; + +import com.example.chat.dao.redis.RedisUtil; +import org.springframework.stereotype.Component; +import org.springframework.web.servlet.HandlerInterceptor; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +@Component +public class TokenInterceptor implements HandlerInterceptor { + @Resource(name = "tokenRedis") + RedisUtil redisUtil;//注册服务 + + @Override + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) { + System.out.println("触发拦截"); + String token = request.getHeader("Token"); +// System.out.println(token + "检查一下token是啥"); +// Enumeration headerNames = request.getHeaderNames(); +// while (headerNames.hasMoreElements()) { +// String headerName = headerNames.nextElement(); +// String headerValue = request.getHeader(headerName); +// System.out.println(headerName + ": " + headerValue); +// } + try { + if (request.getMethod().equals("OPTIONS")) {//检查是否为跨域请求 + return true; + } + + response.setCharacterEncoding("utf-8"); + + if (token != null) { + String verifyToken = JWTUtil.verify(token); + + if (redisUtil.getRedis(verifyToken)!=null) { + response.setStatus(200);//设置状态码为正常,即通过登录验证 + System.out.println("通过拦截器"); + return true; + } else { + response.setStatus(401); + return false;//redis里没有token,即登录超时 + } + } else { + response.setStatus(402); + return false;//请求头不带token + } + + } catch (Exception exception) { + response.setStatus(500);//发生了不可预测的错误 + throw new RuntimeException(); + } + + + } +} diff --git a/src/main/java/com/example/chat/service/CodeCheck.java b/src/main/java/com/example/chat/service/CodeCheck.java new file mode 100644 index 0000000..4f2cd5b --- /dev/null +++ b/src/main/java/com/example/chat/service/CodeCheck.java @@ -0,0 +1,16 @@ +package com.example.chat.service; + +import com.example.chat.dao.redis.CodeRedis; +import com.example.chat.dao.redis.RedisUtil; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +@Service +public class CodeCheck { + @Resource(name="codeRedis") + RedisUtil codeRedis; + public boolean CheckCode(String account,String code){ + return code.equals(codeRedis.getRedis(account)); + } +} diff --git a/src/main/java/com/example/chat/service/CodeCreate.java b/src/main/java/com/example/chat/service/CodeCreate.java new file mode 100644 index 0000000..20ec0c0 --- /dev/null +++ b/src/main/java/com/example/chat/service/CodeCreate.java @@ -0,0 +1,19 @@ +package com.example.chat.service; + +import org.springframework.stereotype.Service; + +@Service +public class CodeCreate { + + public String CreateCode(){ + String[] letters = new String[]{ + "0", "1", "2", "3", "4", "5", "6", "7", + "8", "9" + }; + StringBuilder stringBuilder = new StringBuilder(); + for (int i = 0; i < 6; i++) { + stringBuilder.append(letters[(int) Math.floor(Math.random() * letters.length)]); + } + return String.valueOf(stringBuilder); + } +} diff --git a/src/main/java/com/example/chat/service/LoginService.java b/src/main/java/com/example/chat/service/LoginService.java new file mode 100644 index 0000000..49c6495 --- /dev/null +++ b/src/main/java/com/example/chat/service/LoginService.java @@ -0,0 +1,65 @@ +package com.example.chat.service; + +import com.auth0.jwt.JWT; +import com.example.chat.dao.UserTable; +import com.example.chat.dao.redis.RedisUtil; +import com.example.chat.entity.User; +import com.example.chat.jwt.JWTUtil; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.io.IOException; + + +@Service +public class LoginService { + @Resource + UserTable userTable; + @Resource(name = "tokenRedis") + RedisUtil redisUtil; + + public String LoginCheck(User requestUser) throws IOException { + User user; + user = userTable.getUser(requestUser); + System.out.println(user); + System.out.println(requestUser); + if (user != null) { + + + if (user.getPassword().equals(requestUser.getPassword())) { + String token= JWTUtil.sign(user.getAccount()); + redisUtil.addRedis(user.getAccount(),token); + return token; + } else return null; + }else + { + return null; + } + } + + public int Register(User requestUser) throws IOException { + int returnInt = 0; + User user; + user = userTable.getUser(requestUser); + User emailUser = userTable.emailCheck(requestUser); + if (user != null) { + System.out.println("注册有问题"); + if (user.getAccount().equals(requestUser.getAccount())) { + returnInt = 1001;//账号已存在 + } +// else if (user.getUsername().equals(requestUser.getUsername())) { +// returnInt = 1003;//该用户名已被占用 +// } + } else if (emailUser != null) { + if (emailUser.getEmail().equals(requestUser.getEmail())) { + returnInt = 1002; + } + } else { + requestUser.setUsername("用户"); + userTable.addUser(requestUser); + returnInt = 200; + } + return returnInt; + + } +} diff --git a/src/main/java/com/example/chat/service/mail/MailUtil.java b/src/main/java/com/example/chat/service/mail/MailUtil.java new file mode 100644 index 0000000..55220ed --- /dev/null +++ b/src/main/java/com/example/chat/service/mail/MailUtil.java @@ -0,0 +1,66 @@ +package com.example.chat.service.mail; + +import com.example.chat.dao.redis.CodeRedis; +import com.example.chat.dao.redis.RedisUtil; +import com.example.chat.service.CodeCreate; +import com.sun.mail.util.MailSSLSocketFactory; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.mail.*; +import javax.mail.internet.InternetAddress; +import javax.mail.internet.MimeMessage; +import java.security.GeneralSecurityException; +import java.util.Properties; + +@Service +public class MailUtil { + @Resource + CodeCreate codeCreate; + @Resource(name ="codeRedis") + RedisUtil redisUtil; + + public void sendMail(String receive) { + String code = codeCreate.CreateCode(); + Properties prop = new Properties(); + //开启debug调试 +// prop.setProperty("mail.debug", "true"); + //设置邮件服务器主机名 + prop.setProperty("mail.host", "smtp.qq.com"); + //发送服务器需要身份验证 + prop.setProperty("mail.smtp.auth", "true"); + //发送邮件协议 + prop.setProperty("mail.transport.protocol", "smtp"); + try { + MailSSLSocketFactory sslSocketFactory = new MailSSLSocketFactory(); + //不对服务器主机名进行验证 + sslSocketFactory.setTrustAllHosts(true); + //启用ssl加密 + prop.put("mail.smtp.ssl.enable", "true"); + prop.put("mail.smtp.ssl.socketFactory", sslSocketFactory); + Session session = Session.getInstance(prop); + Transport transport = session.getTransport(); + transport.connect("smtp.qq.com", "747682928@qq.com", "ykrtsjznfvcobfaj"); + Message message = createSimpleMail(session, receive, code); + transport.sendMessage(message, message.getAllRecipients()); + transport.close(); + redisUtil.addRedis(receive,code); + } catch (GeneralSecurityException | MessagingException e) { + throw new RuntimeException(e); + } + } + + private MimeMessage createSimpleMail(Session session, String receive, String code) throws MessagingException { + + MimeMessage message = new MimeMessage(session); + message.setFrom(new InternetAddress("747682928@qq.com")); + message.setRecipient(Message.RecipientType.TO, new InternetAddress(receive)); + + //设置邮件标题 + message.setSubject("ChatABC"); + //设置邮件内容 + message.setContent("感谢您在ChatABC的注册,这是您的注册验证码," + code + "
如非本人操作,请忽略!请勿回复此邮箱", "text/html;charset=UTF-8"); + return message; + + } +} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml new file mode 100644 index 0000000..0b7afe8 --- /dev/null +++ b/src/main/resources/application.yml @@ -0,0 +1,7 @@ +server: + port: 8080 +spring: + redis: + port: 6379 + password: ob666666 + host: 119.29.254.99 diff --git a/src/main/resources/mapper/LoginMapper.xml b/src/main/resources/mapper/LoginMapper.xml new file mode 100644 index 0000000..6095a59 --- /dev/null +++ b/src/main/resources/mapper/LoginMapper.xml @@ -0,0 +1,29 @@ + + + + + + + + insert into user(account, password, username, email) + values (#{account}, #{password}, #{username}, #{email}); + + + delete + from user + where account = #{account}; + + + update user + set password=#{password} and username = #{username} and email=#{email} + where account = #{account}; + + diff --git a/src/main/resources/mybatis.xml b/src/main/resources/mybatis.xml new file mode 100644 index 0000000..e9fea9b --- /dev/null +++ b/src/main/resources/mybatis.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file