客户端登录智云3.0

beetlsql3-dev
whb 10 months ago
parent 17dd8276b9
commit 880d4393b0

@ -72,6 +72,14 @@
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>

@ -0,0 +1,66 @@
package cn.jlw.util;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.JwtBuilder;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import java.util.Date;
import java.util.Map;
/**
* jwt
*/
public class JwtUtils {
// 密钥
private final static String SECRET = "MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAghgsx+OLLThi7c+/HgCaRla8n+/QLHt++uscoK22dMeaVa3WJvRb5C5qtHGzj9V74pI96JpxdWWCN3Zr1QtanQIDAQABAkB2fWRUD1jVMBVS+rPctLnPNPMKTRdzXGv0SC5D3tRfGZqdcfsmZg8hzBVndHxngmwZS73d+hPjofcdefDDnXq1AiEAz/r1AMF7fweN70mbKgBJuTja37puJMsH2Szwrvb5jlcCIQCgIaLZ5d9J7OomL0NwH8ghba/xgBEpKzErfGbFnTfeKwIgc8ptczFFV1DWZb2eJIEqinOr79l0jwl2YiQSD+cyw1sCIHqxCvv1Wx5jPgy/zeYNE+Q5DMP3Ii7u/x+Yk436JiI9AiEAio84hFm44YTUuV7YCYsbyvnCn/vtcAaqZlczbeHlP1I=";
private final static long EXP_TIME = 1000 * 60 * 60 * 2;
private final static String SECRET_ZHIYUN = "zy_zykhd_c1fqkcgekg1icu7ddp8qiho0u";
private final static String CURRENT_TO_ZHIYUN = "jVzvfoZU_eFN0CJcFARg0K6DlzTLa7oMWB7lV_y2s7bkv2Bem0281wEwlJp5afhsmM-Ynwvh3mAUTpwblGEz1A";
/**
* jwt
*
* @param claims
* @return
*/
public static String createJwt(Map<String, Object> claims) {
// 签名算法表示sha256
SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256;
//构造jwt
JwtBuilder builder = Jwts.builder()//.setHeaderParam("type","jwt") // 设置头
.setClaims(claims) // 设置载荷
.setExpiration(new Date(System.currentTimeMillis() + 1800000)) // 设置过期时间
.signWith(signatureAlgorithm, SECRET_ZHIYUN); // 使用指定算法设置签名
//生成jwt
return builder.compact();
}
/**
*
*
* @param jsonWebToken
* @return
*/
public static Claims parseJWT(String jsonWebToken) {
try {
Claims claims = Jwts.parser()
.setSigningKey(SECRET_ZHIYUN)
.parseClaimsJws(jsonWebToken).getBody();
return claims;
} catch (Exception ex) {
throw new RuntimeException(ex.getMessage());
}
}
}

@ -5,12 +5,14 @@ import cn.hutool.core.thread.ThreadUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.extra.spring.SpringUtil;
import cn.hutool.json.JSONUtil;
import cn.hutool.jwt.Claims;
import cn.jlw.Interceptor.RequestReferer;
import cn.jlw.Interceptor.SCoreUser;
import cn.jlw.Interceptor.TStudent;
import cn.jlw.Interceptor.TTeacher;
import cn.jlw.token.TokenService;
import cn.jlw.util.EnumUtil;
import cn.jlw.util.JwtUtils;
import cn.jlw.util.ToolUtils;
import com.alibaba.fastjson.JSONObject;
import com.auth0.jwt.JWT;
@ -19,6 +21,8 @@ import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.exceptions.JWTVerificationException;
import com.auth0.jwt.interfaces.Claim;
import com.auth0.jwt.interfaces.DecodedJWT;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.ibeetl.admin.core.dao.CoreOrgDao;
import com.ibeetl.admin.core.entity.CoreOrg;
import com.ibeetl.admin.core.entity.CoreUser;
import com.ibeetl.admin.core.enums.MenuEnums;
@ -105,6 +109,9 @@ public class IndexController {
private WebPlatformService webPlatformService;
private UniversitiesCollegesDao universitiesCollegesDao;
@Autowired
CoreOrgDao orgDao;
private final Log log = LogFactory.getLog(this.getClass());
public static final String previewIndex = ResourceBundle.getBundle("application").getString("we_chat.baseUrl").replace("server","")+"previewIndex.html";
@ -723,17 +730,49 @@ public class IndexController {
@PostMapping("/login.json")
@ResponseBody
public JsonResult login(HttpServletRequest request, HttpServletResponse response,String code, String password, Integer type, Long typeId) {
public JsonResult login(HttpServletRequest request, HttpServletResponse response,String code, String password, Integer type, Long typeId
,@RequestParam(required = false) String TOKEN ) {
UniversitiesCollegesJurisdictionExperimentalSystem uSystem = new UniversitiesCollegesJurisdictionExperimentalSystem();
uSystem.setType(type);
uSystem.setTypeId(typeId);
UserLoginInfo info = null;
if (org.springframework.util.StringUtils.hasText(TOKEN))
{
try {
io.jsonwebtoken.Claims claims = JwtUtils.parseJWT(TOKEN);
if (claims == null) {
return JsonResult.failMessage("token无效");
}
String userInfoJsonEncry = (String) claims.get("userInfo");
ObjectMapper objectMapperEncry = new ObjectMapper();
CoreUser user = objectMapperEncry.readValue(userInfoJsonEncry, CoreUser.class);
List<CoreOrg> orgs = getUserOrg(user.getId(), user.getOrgId());
info = new UserLoginInfo();
info.setUser(user);
info.setOrgs(orgs);
} catch (Exception e) {
return JsonResult.failMessage("token无效");
}
}
else {
try {
info = userService.login(code, password);
}catch (Exception e){
return JsonResult.failMessage(e.getMessage());
}
}
CoreUser user = info.getUser();
CoreOrg currentOrg = info.getOrgs().get(0);
@ -1116,4 +1155,15 @@ public class IndexController {
public JsonResult<List<AuthResourcesAndSystemInfo>> getAuthResourcesAndSystemInfo(@SCoreUser CoreUser coreUser) {
return JsonResult.success(webPlatformService.getAuthResourcesAndSystemInfo(coreUser));
}
public List<CoreOrg> getUserOrg(long userId, long orgId) {
List<CoreOrg> orgs = orgDao.queryOrgByUser(userId);
if (orgs.isEmpty()) {
//没有赋值任何角色,默认给一个所在部门
CoreOrg userOrg = orgDao.unique(orgId);
orgs.add(userOrg);
}
return orgs;
}
}

Loading…
Cancel
Save