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

View File

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

View File

@ -20,4 +20,9 @@ public interface TokenService {
* @return * @return
*/ */
public Boolean createUserToken (User user, String tokenStr); 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; package com.electromagnetic.industry.software.data.manage.domain.boardservice.user.service.impl;
import cn.hutool.core.date.DateTime; 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.Token;
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model.User; import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model.User;
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model.UserLoginInfo; 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)); token.setExpireAt(new DateTime(now()+UserConstant.DEFAULT_EXPIRE_TIME));
return tokenRepository.insert(token)>0; 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 @Override
public Boolean matchPassword(User user, String password){ public Boolean matchPassword(User user, String password){
String salt = user.getSalt(); String salt = user.getSalt();
String encodePwd = SignUtils.MD5(UserConstant.DEFAULT_PASSWORD+salt); String encodePwd = SignUtils.MD5(password+salt);
return user.getUserPwd().equals(encodePwd); return user.getUserPwd().equals(encodePwd);
} }

View File

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

View File

@ -132,7 +132,7 @@ public class AESUtils {
Security.addProvider(new BouncyCastleProvider()); Security.addProvider(new BouncyCastleProvider());
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS7Padding"); Cipher cipher = Cipher.getInstance("AES/ECB/PKCS7Padding");
cipher.init(Cipher.DECRYPT_MODE, secretKeySpec); cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);
return cipher.doFinal(Base64.decodeBase64(enc)).toString(); return new String(cipher.doFinal(Base64.decodeBase64(enc)));
} catch (NoSuchPaddingException e) { } catch (NoSuchPaddingException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} catch (IllegalBlockSizeException 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.UserPublishRequest;
import com.electromagnetic.industry.software.data.manage.request.user.UserLoginRequest; import com.electromagnetic.industry.software.data.manage.request.user.UserLoginRequest;
import com.electromagnetic.industry.software.data.manage.request.user.UserRequest; 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.BaseResult;
import electromagnetic.data.framework.share.result.LoginResult; import electromagnetic.data.framework.share.result.LoginResult;
@ -14,14 +15,14 @@ public interface UserFacade {
* @param loginRequest * @param loginRequest
* @return * @return
*/ */
LoginResult<?> login(UserLoginRequest loginRequest); ElectromagneticResult<?> login(UserLoginRequest loginRequest);
/** /**
* 新增用户信息 * 新增用户信息
* @param userRequest * @param userRequest
* @return * @return
*/ */
BaseResult<?> createUser(UserRequest userRequest); ElectromagneticResult<?> createUser(UserRequest userRequest);
/** /**
* 编辑用户信息 * 编辑用户信息

View File

@ -12,4 +12,11 @@ public interface TokenMapper {
* @return * @return
*/ */
int insert(Token token); 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){ public int insert(Token token){
return tokenMapper.insert(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" /> <result column="expire_at" jdbcType="TIMESTAMP" property="expireAt" />
</resultMap> </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 id="insert" parameterType="com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model.Token">
insert into tokens( insert into tokens(
<if test="userId != null and userId !='' ">user_id,</if> <if test="userId != null and userId !='' ">user_id,</if>
@ -26,4 +30,10 @@
<if test="expireAt !=null">#{expireAt}</if> <if test="expireAt !=null">#{expireAt}</if>
) )
</insert> </insert>
<select id="selectToken" parameterType="String" resultMap="TokenResultMap">
<include refid="selectTokenVo" />
where token=#{token}
</select>
</mapper> </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.request.user.UserRequest;
import com.electromagnetic.industry.software.data.manage.service.mappers.UserMappers; import com.electromagnetic.industry.software.data.manage.service.mappers.UserMappers;
import electromagnetic.data.framework.share.id.IdWorker; 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.BaseResult;
import electromagnetic.data.framework.share.result.LoginResult; import electromagnetic.data.framework.share.result.LoginResult;
import electromagnetic.data.framework.share.sign.AESUtils; import electromagnetic.data.framework.share.sign.AESUtils;
@ -37,16 +39,16 @@ public class UserFacadeImpl implements UserFacade {
* @return * @return
*/ */
@Override @Override
public LoginResult<Boolean> login(UserLoginRequest loginRequest) { public ElectromagneticResult<String> login(UserLoginRequest loginRequest) {
UserLoginInfo info = UserMappers.INSTANCE.getUserLoginRequestToModel(loginRequest); UserLoginInfo info = UserMappers.INSTANCE.getUserLoginRequestToModel(loginRequest);
String decodePwd = AESUtils.decrypt(info.getUserPwd(), UserConstant.SECRET_KEY); String decodePwd = AESUtils.decrypt(info.getUserPwd(), UserConstant.SECRET_KEY);
User user = userService.getUserByWorkNumber(info.getWorkNumber()); 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); String tokenStr = tokenService.createToken(info);
tokenService.createUserToken(user, tokenStr); 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 * @return
*/ */
@Override @Override
public BaseResult<Boolean> createUser(UserRequest userRequest){ public ElectromagneticResult<Boolean> createUser(UserRequest userRequest){
User user = UserMappers.INSTANCE.getUserRequestToModel(userRequest); User user = UserMappers.INSTANCE.getUserRequestToModel(userRequest);
user.setSalt(RandomStringUtils.randomAlphanumeric(16)); user.setSalt(RandomStringUtils.randomAlphanumeric(16));
user.setUserId(IdWorker.getSnowFlakeIdString()); user.setUserId(IdWorker.getSnowFlakeIdString());
user.setUserPwd(SignUtils.MD5(UserConstant.DEFAULT_PASSWORD+user.getSalt())); user.setUserPwd(SignUtils.MD5(UserConstant.DEFAULT_PASSWORD+user.getSalt()));
user.setIsPublished(UserConstant.DEFAULT_PUBLISH_STATUS); user.setIsPublished(UserConstant.DEFAULT_PUBLISH_STATUS);
return BaseResultUtil.success(userService.createUser(user)); return ElectromagneticResultUtil.success(userService.createUser(user));
} }
/** /**