package com.Service.Impl;
import com.Dao.UserDao;
import com.Service.UserService;
import com.Utils.GetCode;
import com.Utils.Result;
import com.Utils.TokenUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Service;
import java.util.Map;
import java.util.concurrent.TimeUnit;
/**
* @author 13049
*/
@Service
public class UserServiceImp implements UserService {
@Autowired
public UserDao userDao;
@Autowired
public RedisTemplate redisTemplate;
@Autowired
JavaMailSender mailSender;
//默认编码
public static final String DEFAULT_ENCODING = "UTF-8";
/**
* 用户通过账号密码登录
* 数据库搜索对应账号的密码与用户输入的密码进行比对
* 查询报错说明没有此账号
* */
@Override
public Result login(Map<Object,Object> map) {
Result result = new Result();
try {
String userId = (String) map.get("UserID");
String word = userDao.login(userId);
if(word.equals(map.get("PassWord"))){
String token = TokenUtil.sign(userId);
result.setCode(200);
result.setMessage("登录成功!");
result.setData(token);
}else {
result.setCode(400);
result.setMessage("密码错误!");
}
}catch (Exception e){
result.setCode(400);
result.setMessage("账号错误!");
}
return result;
}
/**
* 手机号验证码登录
* 用户发送验证码
* 得到用户手机号,调用阿里云短信服务发送短信
* 把用户手机号和验证码存入缓存并设置过期时间
* 以及设置手机号发送验证码的次数和过期时间
* */
@Override
public Result verifyCode(String email) {
Result result = new Result();
try {
//生成6位验证码
String code = GetCode.getVerifyCode();
//存入redis
if(redisTemplate.hasKey(email + "1") &&
Integer.valueOf(String.valueOf(redisTemplate.opsForValue().get(email + "1"))) < 5){
redisTemplate.opsForValue().set(email,code,300,TimeUnit.SECONDS);
redisTemplate.opsForValue().increment(email + "1",1);
//发送邮件
mailSender.send(GetCode.sendMes(email,code));
}else if(!redisTemplate.hasKey(email + "1")){
redisTemplate.opsForValue().set(email,code,300, TimeUnit.SECONDS);
redisTemplate.opsForValue().set(email + "1","0",3600,TimeUnit.SECONDS);
mailSender.send(GetCode.sendMes(email,code));
}else{
result.setCode(300);
result.setMessage("一小时之内已发送5次,请一小时之后再试!");
result.setData(null);
return result;
}
result.setCode(200);
result.setMessage("发送成功!");
}catch (Exception e){
result.setCode(400);
result.setMessage("发送失败,请重试!");
}
return result;
}
/**
* 手机号验证码登录
* 接收用户手机号和密码
* 取出缓存中该手机号的验证码与之比对
* */
@Override
public Result loginOnMail(String email, String verifyCode) {
Result result = new Result();
try{
if(redisTemplate.hasKey(email)){
if(String.valueOf(redisTemplate.opsForValue().get(email)).equals(verifyCode)){
redisTemplate.delete(email);
result.setCode(200);
result.setMessage("验证成功!");
return result;
}
}
}catch (Exception e){
result.setCode(400);
result.setMessage("验证码错误!");
}
return result;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
用户通过邮箱验证码登录,验证码5分钟内有效,且同一邮箱1小时之内只能发送5次验证码,用redis来缓存验证码及其过期时间.zip
共34个文件
class:11个
java:11个
xml:9个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 97 浏览量
2024-03-29
15:19:55
上传
评论
收藏 34KB ZIP 举报
温馨提示
可以用于毕业设计(项目源码+项目说明)目前在window10/11测试环境一切正常,用于演示的图片和部署教程说明都在压缩包里
资源推荐
资源详情
资源评论
收起资源包目录
用户通过邮箱验证码登录,验证码5分钟内有效,且同一邮箱1小时之内只能发送5次验证码,用redis来缓存验证码及其过期时间.zip (34个子文件)
loginOnEmail-main
sale
pom.xml 3KB
src
main
resources
application.yml 797B
java
com
Utils
Result.java 594B
TokenUtil.java 2KB
GetCode.java 1KB
ApplicationMain.java 1KB
Dao
UserDao.java 4KB
Interceptor
TokenInterceptor.java 1KB
WebMvcConfig
WebMvcConfig.java 1KB
Service
UserService.java 543B
Impl
UserServiceImp.java 4KB
Controller
UserController.java 2KB
Entity
User.java 2KB
.idea
jarRepositories.xml 845B
uiDesigner.xml 9KB
runConfigurations.xml 337B
libraries
Java_EE_6_Java_EE_6.xml 626B
misc.xml 528B
inspectionProfiles
Project_Default.xml 2KB
compiler.xml 751B
.gitignore 176B
encodings.xml 186B
target
classes
application.yml 797B
com
Utils
Result.class 1KB
TokenUtil.class 3KB
GetCode.class 1KB
Dao
UserDao.class 4KB
ApplicationMain.class 2KB
Interceptor
TokenInterceptor.class 2KB
WebMvcConfig
WebMvcConfig.class 873B
Service
Impl
UserServiceImp.class 4KB
UserService.class 486B
Controller
UserController.class 3KB
Entity
User.class 2KB
共 34 条
- 1
资源评论
不走小道
- 粉丝: 3237
- 资源: 5112
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功