提交 c0abcaca 编写于 作者: 112Lst's avatar 112Lst

【add】登录打通

上级 009a9176
......@@ -13,10 +13,7 @@ import com.lssst.auth.domain.entity.AuthUserBO;
import com.lssst.auth.domain.service.AuthUserDomainService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
......@@ -105,17 +102,15 @@ public class UserController {
}
}
// 测试登录,浏览器访问: http://localhost:8081/user/doLogin?username=zhang&password=123456
@RequestMapping("doLogin")
public SaResult doLogin(String username, String password) {
// 此处仅作模拟示例,真实项目需要从数据库中查询数据进行比对
if ("zhang".equals(username) && "123456".equals(password)) {
StpUtil.login("鸡翅");
SaTokenInfo tokenInfo = StpUtil.getTokenInfo();
// 第3步,返回给前端
return SaResult.data(tokenInfo);
public Result<SaTokenInfo> doLogin(@RequestParam("validCode") String validCode) {
try {
Preconditions.checkArgument(!StringUtils.isBlank(validCode),"验证码不能为空!");
return Result.ok(authUserDomainService.doLogin(validCode));
}catch (Exception e){
log.error("UserController.doLogin.error:{}", e.getMessage(), e);
return Result.fail("用户登录失败");
}
return SaResult.error("登录失败");
}
// 查询登录状态,浏览器访问: http://localhost:8081/user/isLogin
......@@ -124,5 +119,6 @@ public class UserController {
return "当前会话是否登录:" + StpUtil.isLogin();
}
}
package com.lssst.auth.domain.service;
import cn.dev33.satoken.stp.SaTokenInfo;
import com.lssst.auth.domain.entity.AuthUserBO;
import java.util.List;
......@@ -24,4 +25,5 @@ public interface AuthUserDomainService {
*/
Boolean delete(AuthUserBO authUserBO);
SaTokenInfo doLogin(String validCode);
}
......@@ -2,6 +2,8 @@ package com.lssst.auth.domain.service.impl;
import cn.dev33.satoken.secure.SaSecureUtil;
import cn.dev33.satoken.stp.SaTokenInfo;
import cn.dev33.satoken.stp.StpUtil;
import com.google.gson.Gson;
import com.lssst.auth.common.enums.AuthUserStatusEnum;
import com.lssst.auth.common.enums.IsDeletedFlagEnum;
......@@ -14,6 +16,7 @@ import com.lssst.auth.infra.basic.entity.*;
import com.lssst.auth.infra.basic.service.*;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
......@@ -50,13 +53,17 @@ public class AuthUserDomainServiceImpl implements AuthUserDomainService {
private String authRolePrefix = "auth.role";
private static final String LOGIN_PREFIX = "loginCode";
@Override
@SneakyThrows
@Transactional(rollbackFor = Exception.class)
public Boolean register(AuthUserBO authUserBO) {
AuthUser authUser = AuthUserBOConverter.INSTANCE.convertBOToEntity(authUserBO);
authUser.setPassword(SaSecureUtil.md5BySalt(authUser.getPassword(), salt));
if (StringUtils.isNotBlank(authUser.getPassword())) {
authUser.setPassword(SaSecureUtil.md5BySalt(authUser.getPassword(), salt));
}
authUser.setStatus(AuthUserStatusEnum.OPEN.getCode());
authUser.setIsDeleted(IsDeletedFlagEnum.UN_DELETED.getCode());
Integer count = authUserService.insert(authUser);
......@@ -112,5 +119,19 @@ public class AuthUserDomainServiceImpl implements AuthUserDomainService {
//有任何的更新,都要与缓存进行同步的修改
return count > 0;
}
public SaTokenInfo doLogin(String validCode) {
String loginKey = redisUtil.buildKey(LOGIN_PREFIX, validCode);
String openId = redisUtil.get(loginKey);
if (StringUtils.isBlank(openId)) {
return null;
}
AuthUserBO authUserBO = new AuthUserBO();
authUserBO.setUserName(openId);
this.register(authUserBO);
StpUtil.login(openId);
SaTokenInfo tokenInfo = StpUtil.getTokenInfo();
return tokenInfo;
}
}
......@@ -15,6 +15,8 @@ public class ReceiveTextMsgHandler implements WxChatMsgHandler {
private static final String KEY_WORD = "验证码";
private static final String LOGIN_PREFIX = "loginCode";
@Resource
private RedisUtil redisUtil;
......@@ -35,9 +37,9 @@ public class ReceiveTextMsgHandler implements WxChatMsgHandler {
Random random = new Random();
int num = random.nextInt(1000);
String numKey = redisUtil.buildKey(fromUserName, String.valueOf(num));
redisUtil.setNx(numKey, "1", 5L, TimeUnit.MINUTES);
String numContent = "您当前的验证码是:" + num + "5分钟内有效";
String numKey = redisUtil.buildKey(LOGIN_PREFIX, String.valueOf(num));
redisUtil.setNx(numKey, fromUserName, 5L, TimeUnit.MINUTES);
String numContent = "您当前的验证码是:" + num + "5分钟内有效";
String replyContent = "<xml>\n" +
" <ToUserName><![CDATA[" + fromUserName + "]]></ToUserName>\n" +
" <FromUserName><![CDATA[" + toUserName + "]]></FromUserName>\n" +
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册