作者 shenhailong

完善卡口的统一认证

... ... @@ -159,3 +159,7 @@ jwt:
info:
version: 2.0
description: "具有公司及部门管理级别的用户管理中心"
ger:
req-url: "http://10.5.14.103:27080/sso/p3/serviceValidate?format=json&service="
res-url: "http://10.50.3.73:8880/%23/ssologin"
# res-url: "http://10.50.7.70:9909/%23/ssologin"
... ...
package com.tianbo.warehouse.bean;
import lombok.Data;
import org.springframework.security.core.Authentication;
import java.io.Serializable;
import java.util.Map;
... ...
... ... @@ -43,6 +43,12 @@ public class AnonymousController {
@Value("${jwt.max-alive}")
protected Integer jwtMaxAlive;
@Value("${ger.req-url}")
private String requestUrl;
@Value("${ger.res-url}")
private String responseUrl;
@Autowired
RoleService roleService;
... ... @@ -131,7 +137,7 @@ public class AnonymousController {
log.info("票据接受:{}", ticket);
if (!StringUtils.isEmpty(ticket)){
log.info("开始验证票据");
String result = HttpClientUtil.httpGet("http://10.5.14.103:27080/sso/p3/serviceValidate?format=json&service="+"http://10.50.7.70:9909/%23/ssologin"+"&ticket="+ticket, "UTF-8");
String result = HttpClientUtil.httpGet(requestUrl+responseUrl+"&ticket="+ticket, "UTF-8");
log.info("验证票据返回值:{}", result);
Map<String, Object> userInfo = resolveUserInfo(result);
if (userInfo != null){
... ... @@ -139,23 +145,26 @@ public class AnonymousController {
// KakoUser user = kakoUserMapper.findLonginName(userInfo.get("loginName").toString(), userInfo.get("userId").toString());
KakoUser user = kakoUserService.loadByUsername(userInfo.get("loginName").toString());
log.info("查询用户信息:{}", user);
//返回前端登陆成功后的用户信息
KakoUser loginedUser = new KakoUser();
loginedUser.setLoginName(user.getUsername());
loginedUser.setId(user.getId());
loginedUser.setName(user.getName());
loginedUser.setRoles(user.getRoles());
//设置用户的TOKEN的有效时间,时间配置在配置文件中设置
String jwtToken = JwtTokenUtil.generateToken(loginedUser.getUsername(), jwtMaxAlive);
log.info("设置用户token:{}", jwtToken);
loginedUser.setToken(jwtToken);
//这里将登录成功的[user]对象数据写入redis缓存,KEY为token value为user的JSON对象
String json = JSON.toJSONString(user);
boolean set = redisUtils.set(jwtToken, json, 3600 * 24 * 7);
log.info("用户信息存入redis:{}", set);
Map<String,Object> menuMap = permissionService.getUserMenusKako(user.getId());
//返回用户信息和用户可访问的目录列表
return new AuthSuccessResponse(loginedUser,menuMap);
if (user != null){
//返回前端登陆成功后的用户信息
KakoUser loginedUser = new KakoUser();
loginedUser.setLoginName(user.getUsername());
loginedUser.setId(user.getId());
loginedUser.setName(user.getName());
loginedUser.setRoles(user.getRoles());
//设置用户的TOKEN的有效时间,时间配置在配置文件中设置
String jwtToken = JwtTokenUtil.generateToken(loginedUser.getUsername(), jwtMaxAlive);
log.info("设置用户token:{}", jwtToken);
loginedUser.setToken(jwtToken);
//这里将登录成功的[user]对象数据写入redis缓存,KEY为token value为user的JSON对象
String json = JSON.toJSONString(user);
boolean set = redisUtils.set(jwtToken, json, 3600 * 24 * 7);
log.info("用户信息存入redis:{}", set);
Map<String,Object> menuMap = permissionService.getUserMenusKako(user.getId());
//返回用户信息和用户可访问的目录列表
return new AuthSuccessResponse(loginedUser,menuMap);
}
return null;
}
return null;
}else {
... ...
... ... @@ -65,12 +65,16 @@ public class MyLoginAuthenticationProcessFilter extends AbstractAuthenticationPr
authRequest = new UsernamePasswordAuthenticationToken(loginUserName,loginUserPass, null);
authRequest.setDetails(authenticationDetailsSource.buildDetails(request));
}else {
redisUtils.del("verifyToken_"+ verifyToken);
throw new BadCredentialsException("验证码错误!");
}
} catch (BadCredentialsException e){
e.printStackTrace();
throw new PreAuthenticatedCredentialsNotFoundException(e.getMessage());
}catch (Exception e) {
e.printStackTrace();
throw new AuthenticationServiceException(e.getMessage());
}
return this.getAuthenticationManager().authenticate(authRequest);
}
... ...
... ... @@ -37,15 +37,15 @@ public class SM3EncryptUtil {
return str.toLowerCase();
}
// public static void main(String[] args) {
// Security.addProvider(new BouncyCastleProvider());
// try {
// String pwdDigest = passwordSm3("vmvnv1v2VV.");
// System.out.println(pwdDigest);
// } catch (Exception e) {
// e.printStackTrace();
// }
// }
public static void main(String[] args) {
Security.addProvider(new BouncyCastleProvider());
try {
String pwdDigest = passwordSm3("vmvnv1v2VV.");
System.out.println(pwdDigest);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 密码SM3加密
... ...
... ... @@ -213,6 +213,9 @@
<if test="delFlag != null" >
#{delFlag,jdbcType=CHAR},
</if>
<if test="userSyncId != null" >
#{userSyncId,jdbcType=VARCHAR},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="com.tianbo.warehouse.model.KakoUser" >
... ...