用户登录返回result修改,拦截器实现

This commit is contained in:
s2042968 2024-11-15 17:25:24 +08:00
parent f352d7226a
commit d2d9faedd5
12 changed files with 73 additions and 12 deletions

View File

@ -5,6 +5,7 @@ import com.electromagnetic.industry.software.data.manage.request.user.UserModiRe
import com.electromagnetic.industry.software.data.manage.request.user.UserPublishRequest;
import com.electromagnetic.industry.software.data.manage.request.user.UserLoginRequest;
import com.electromagnetic.industry.software.data.manage.request.user.UserRequest;
import electromagnetic.data.framework.share.model.ElectromagneticResult;
import electromagnetic.data.framework.share.result.BaseResult;
import electromagnetic.data.framework.share.result.LoginResult;
import io.swagger.annotations.ApiOperation;
@ -21,19 +22,21 @@ public class UserController {
@ApiOperation(value = "登录", notes = "")
@PostMapping("/login")
public LoginResult<?> login(@RequestBody UserLoginRequest loginRequest) {
public ElectromagneticResult<?> login(@RequestBody UserLoginRequest loginRequest) {
return userFacade.login(loginRequest);
}
@ApiOperation(value = "新增用户信息", notes = "")
@PostMapping
public BaseResult<?> createUser(@RequestBody UserRequest userRequest) {
public ElectromagneticResult<?> createUser(@RequestBody UserRequest userRequest) {
return userFacade.createUser(userRequest);
}
@ApiOperation(value="编辑用户信息",notes = "")
@PutMapping
public BaseResult<?> editUser(@RequestBody UserModiRequest userModiRequest){ return userFacade.modifyUser(userModiRequest);}
@ApiOperation(value = "发布用户信息", notes = "")
@RequestMapping(value = "/publish", method = RequestMethod.POST)
public BaseResult<?> publishUser(@RequestBody UserPublishRequest userPublishRequest) {

View File

@ -10,4 +10,11 @@ public interface TokenRepository {
* @return
*/
int insert(Token token);
/**
* 查询令牌
* @param token
* @return
*/
public Token selectToken(String token);
}

View File

@ -20,4 +20,9 @@ public interface TokenService {
* @return
*/
public Boolean createUserToken (User user, String tokenStr);
/**
* 查看token是否有效
*/
public Boolean isTokenValid(String tokenStr);
}

View File

@ -1,6 +1,7 @@
package com.electromagnetic.industry.software.data.manage.domain.boardservice.user.service.impl;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.SystemClock;
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model.Token;
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model.User;
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model.UserLoginInfo;
@ -56,4 +57,17 @@ public class TokenServiceImpl implements TokenService {
token.setExpireAt(new DateTime(now()+UserConstant.DEFAULT_EXPIRE_TIME));
return tokenRepository.insert(token)>0;
}
/**
* 查看token是否有效
*/
@Override
public Boolean isTokenValid(String tokenStr){
Token token = tokenRepository.selectToken(tokenStr);
DateTime now = new DateTime(SystemClock.now());
if (token != null && now.before(token.getExpireAt())) {
return true;
}
return false;
}
}

View File

@ -59,7 +59,7 @@ public class UserServiceImpl implements UserService {
@Override
public Boolean matchPassword(User user, String password){
String salt = user.getSalt();
String encodePwd = SignUtils.MD5(UserConstant.DEFAULT_PASSWORD+salt);
String encodePwd = SignUtils.MD5(password+salt);
return user.getUserPwd().equals(encodePwd);
}

View File

@ -71,6 +71,10 @@
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
</dependency>
</dependencies>
</project>

View File

@ -132,7 +132,7 @@ public class AESUtils {
Security.addProvider(new BouncyCastleProvider());
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS7Padding");
cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);
return cipher.doFinal(Base64.decodeBase64(enc)).toString();
return new String(cipher.doFinal(Base64.decodeBase64(enc)));
} catch (NoSuchPaddingException e) {
throw new RuntimeException(e);
} catch (IllegalBlockSizeException e) {

View File

@ -4,6 +4,7 @@ import com.electromagnetic.industry.software.data.manage.request.user.UserModiRe
import com.electromagnetic.industry.software.data.manage.request.user.UserPublishRequest;
import com.electromagnetic.industry.software.data.manage.request.user.UserLoginRequest;
import com.electromagnetic.industry.software.data.manage.request.user.UserRequest;
import electromagnetic.data.framework.share.model.ElectromagneticResult;
import electromagnetic.data.framework.share.result.BaseResult;
import electromagnetic.data.framework.share.result.LoginResult;
@ -14,14 +15,14 @@ public interface UserFacade {
* @param loginRequest
* @return
*/
LoginResult<?> login(UserLoginRequest loginRequest);
ElectromagneticResult<?> login(UserLoginRequest loginRequest);
/**
* 新增用户信息
* @param userRequest
* @return
*/
BaseResult<?> createUser(UserRequest userRequest);
ElectromagneticResult<?> createUser(UserRequest userRequest);
/**
* 编辑用户信息

View File

@ -12,4 +12,11 @@ public interface TokenMapper {
* @return
*/
int insert(Token token);
/**
* 查询
* @param token
* @return Token
*/
Token selectToken(String token);
}

View File

@ -22,4 +22,12 @@ public class TokenRepositoryImpl implements TokenRepository {
public int insert(Token token){
return tokenMapper.insert(token);
}
/**
* 查询令牌
* @param token
* @return
*/
@Override
public Token selectToken(String token) {return tokenMapper.selectToken(token);}
}

View File

@ -10,6 +10,10 @@
<result column="expire_at" jdbcType="TIMESTAMP" property="expireAt" />
</resultMap>
<sql id="selectTokenVo">
select id, user_id, token, is_long_term, created_at, expire_at from tokens
</sql>
<insert id="insert" parameterType="com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model.Token">
insert into tokens(
<if test="userId != null and userId !='' ">user_id,</if>
@ -26,4 +30,10 @@
<if test="expireAt !=null">#{expireAt}</if>
)
</insert>
<select id="selectToken" parameterType="String" resultMap="TokenResultMap">
<include refid="selectTokenVo" />
where token=#{token}
</select>
</mapper>

View File

@ -12,6 +12,8 @@ import com.electromagnetic.industry.software.data.manage.request.user.UserLoginR
import com.electromagnetic.industry.software.data.manage.request.user.UserRequest;
import com.electromagnetic.industry.software.data.manage.service.mappers.UserMappers;
import electromagnetic.data.framework.share.id.IdWorker;
import electromagnetic.data.framework.share.model.ElectromagneticResult;
import electromagnetic.data.framework.share.model.ElectromagneticResultUtil;
import electromagnetic.data.framework.share.result.BaseResult;
import electromagnetic.data.framework.share.result.LoginResult;
import electromagnetic.data.framework.share.sign.AESUtils;
@ -37,16 +39,16 @@ public class UserFacadeImpl implements UserFacade {
* @return
*/
@Override
public LoginResult<Boolean> login(UserLoginRequest loginRequest) {
public ElectromagneticResult<String> login(UserLoginRequest loginRequest) {
UserLoginInfo info = UserMappers.INSTANCE.getUserLoginRequestToModel(loginRequest);
String decodePwd = AESUtils.decrypt(info.getUserPwd(), UserConstant.SECRET_KEY);
User user = userService.getUserByWorkNumber(info.getWorkNumber());
if (user==null || userService.matchPassword(user, decodePwd)) {
if ( user!=null && userService.matchPassword(user, decodePwd)) {
String tokenStr = tokenService.createToken(info);
tokenService.createUserToken(user, tokenStr);
return LoginResultUtil.success(tokenStr);
return ElectromagneticResultUtil.success(tokenStr);
}
return LoginResultUtil.fail("500","用户不存在/密码错误");
return ElectromagneticResultUtil.fail("500","用户不存在/密码错误");
}
/**
@ -55,13 +57,13 @@ public class UserFacadeImpl implements UserFacade {
* @return
*/
@Override
public BaseResult<Boolean> createUser(UserRequest userRequest){
public ElectromagneticResult<Boolean> createUser(UserRequest userRequest){
User user = UserMappers.INSTANCE.getUserRequestToModel(userRequest);
user.setSalt(RandomStringUtils.randomAlphanumeric(16));
user.setUserId(IdWorker.getSnowFlakeIdString());
user.setUserPwd(SignUtils.MD5(UserConstant.DEFAULT_PASSWORD+user.getSalt()));
user.setIsPublished(UserConstant.DEFAULT_PUBLISH_STATUS);
return BaseResultUtil.success(userService.createUser(user));
return ElectromagneticResultUtil.success(userService.createUser(user));
}
/**