Spring boot + Spring Security 6 + vue3 项目模板
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

143 lines
7.3 KiB

package com.depsystem.app;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import cn.hutool.jwt.JWT;
import cn.hutool.jwt.JWTHeader;
import cn.hutool.jwt.JWTPayload;
import cn.hutool.jwt.JWTUtil;
import com.depsystem.app.loginServer.Login;
import com.depsystem.app.loginServer.LoginDAO;
import com.depsystem.app.loginServer.LoginMapper;
import com.depsystem.app.systemServer.securityServer.entity.MyUserDetails;
import com.depsystem.app.systemServer.util.JwtUtil;
import com.depsystem.app.systemServer.util.ResultConvert;
import io.jsonwebtoken.Claims;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import java.io.UnsupportedEncodingException;
import java.util.*;
@SpringBootTest
class AppApplicationTests {
@Autowired
LoginMapper loginMapper;
@Test
void contextLoads() {
BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
String encode = encoder.encode("HziqpyeW");
System.out.println(encode);
System.out.println("**************************************");
System.out.println("测试获取角色");
LoginDAO userByName = loginMapper.findUserByName("683697414");
ResultConvert convert = new ResultConvert();
Login map1 = convert.map(userByName, Login.class);
System.out.println(map1);
String role = loginMapper.getRole("683697414");
System.out.println(role);
List<Map<String, Object>> userPermissions = loginMapper.getUserPermissions("683697414");
//Integer[] permission = (Integer[]) userPermission.get("permissionId");
//String permission2 = userPermission.get("permission").toString();
//System.out.println(Arrays.toString(permission));
//System.out.println(permission2);
List<Map<String, Object>> resultList = new ArrayList<>();
for (Map<String, Object> permission : userPermissions) {
Map<String, Object> map = new HashMap<>();
map.put("permissionId", permission.get("permissionId"));
map.put("permission", Arrays.asList(((String)permission.get("permission")).split(",")));
resultList.add(map);
}
System.out.println(resultList);
/* 操作权限获取:
结果:[1, 111, 121, 131, 141, 151, 161, 171, 181, 191] 这些menu选项,可以增删改查。
* 后面再操作编辑时就判断是其角色是否有这个权限。
* [
* {permissionId=1, permission=[delete, updata, select, add]},
* {permissionId=111, permission=[add, delete, updata, select]},
* {permissionId=121, permission=[select, updata, delete, add]},
* {permissionId=131, permission=[add, delete, updata, select]},
* {permissionId=141, permission=[add, delete, updata, select]},
* {permissionId=151, permission=[add, select, delete, updata]},
* {permissionId=161, permission=[add, delete, updata, select]},
* {permissionId=171, permission=[select, updata, delete, add]},
* {permissionId=181, permission=[add, delete, updata, select]},
* {permissionId=191, permission=[add, delete, updata, select]}
* ]
* */
Map<String, Object> userByModelPath = loginMapper.findUserByModelPath("136323636");
System.out.println(userByModelPath);
JSONObject entries = JSONUtil.parseObj(userByModelPath);
System.out.println(entries);
/* 访问权限获取:
结果:
{urls=/:user/Debit,/:user/Fix,/:user/Inventory,/:user/Maintenance,/:user/Purchase,/:user/Query,/:user/Repair,/:user/Storage,/:user/Transfer,/me,
name=683697414}
*/
/**
* 测试ResultConvert
*/
//ResultConvert convert = new ResultConvert();
String input = entries.get("urls").toString();
List<String> paths = new ArrayList<>();
String[] pairs = input.split(",");
for (String pair : pairs) {
paths.add(pair.trim());
}
System.out.println(Arrays.toString(pairs));
System.out.println("**************************************");
System.out.println("测试MyUserDetail");
MyUserDetails userDetails = new MyUserDetails(map1,role,paths);
System.out.println(userDetails);
String roles = userDetails.getRoles();
System.out.println(roles);
String username = userDetails.getUsername();
System.out.println(username);
List<String> path = userDetails.getPath();
System.out.println(path);
System.out.println("**************************************");
boolean b = JwtUtil.validateToken("eyJhbGciOiJIUzI1NiJ9.eyJwYXRoIjoiWy9EZWJpdCwgL0ZpeCwgL0ludmVudG9yeSwgL01haW50ZW5hbmNlLCAvbWUsIC9QdXJjaGFzZSwgL1F1ZXJ5LCAvUmVwYWlyLCAvU3RvcmFnZSwgL1RyYW5zZmVyXSIsInJvbGUiOiJhZG1pbjIiLCJuYW1lIjoiNjgzNjk3NDE0IiwiZXhwIjoxNjgyMjc2OTMzLCJpYXQiOjE2ODIyNzMzMzN9.0zmWGYUcTg43nbx1QA4WIOjg5jdB3Ne8R81ah7b6MVI");
System.out.println(b);
String usernameFromToken = JwtUtil.getUsernameFromToken("eyJhbGciOiJIUzI1NiJ9.eyJwYXRoIjoiWy9EZWJpdCwgL0ZpeCwgL0ludmVudG9yeSwgL01haW50ZW5hbmNlLCAvbWUsIC9QdXJjaGFzZSwgL1F1ZXJ5LCAvUmVwYWlyLCAvU3RvcmFnZSwgL1RyYW5zZmVyXSIsInJvbGUiOiJhZG1pbjIiLCJuYW1lIjoiNjgzNjk3NDE0IiwiZXhwIjoxNjgyMjc2OTMzLCJpYXQiOjE2ODIyNzMzMzN9.0zmWGYUcTg43nbx1QA4WIOjg5jdB3Ne8R81ah7b6MVI");
String roleFromToken = JwtUtil.getRoleFromToken("eyJhbGciOiJIUzI1NiJ9.eyJwYXRoIjoiWy9EZWJpdCwgL0ZpeCwgL0ludmVudG9yeSwgL01haW50ZW5hbmNlLCAvbWUsIC9QdXJjaGFzZSwgL1F1ZXJ5LCAvUmVwYWlyLCAvU3RvcmFnZSwgL1RyYW5zZmVyXSIsInJvbGUiOiJhZG1pbjIiLCJuYW1lIjoiNjgzNjk3NDE0IiwiZXhwIjoxNjgyMjc2OTMzLCJpYXQiOjE2ODIyNzMzMzN9.0zmWGYUcTg43nbx1QA4WIOjg5jdB3Ne8R81ah7b6MVI");
//List<String> pathFromToken = JwtUtil.getPathFromToken("eyJhbGciOiJIUzI1NiJ9.eyJwYXRoIjpbIi9EZWJpdCIsIi9GaXgiLCIvSW52ZW50b3J5IiwiL01haW50ZW5hbmNlIiwiL21lIiwiL1B1cmNoYXNlIiwiL1F1ZXJ5IiwiL1JlcGFpciIsIi9TdG9yYWdlIiwiL1RyYW5zZmVyIl0sInJvbGUiOiJhZG1pbjIiLCJuYW1lIjoiNjgzNjk3NDE0IiwiZXhwIjoxNjgyMjU0NjkyLCJpYXQiOjE2ODIyNTEwOTJ9.Sf3p5o8p_Tj-33zXfofx1ld-ugXW7WYCewhx27nHSnw");
System.out.println(usernameFromToken);
System.out.println(roleFromToken);
//System.out.println(pathFromToken);
System.out.println("**************************************");
JWT jwt = JWTUtil.parseToken("eyJhbGciOiJIUzI1NiJ9.eyJwYXRoIjpbIi9EZWJpdCIsIi9GaXgiLCIvSW52ZW50b3J5IiwiL01haW50ZW5hbmNlIiwiL21lIiwiL1B1cmNoYXNlIiwiL1F1ZXJ5IiwiL1JlcGFpciIsIi9TdG9yYWdlIiwiL1RyYW5zZmVyIl0sInJvbGUiOiJhZG1pbjIiLCJuYW1lIjoiNjgzNjk3NDE0IiwiZXhwIjoxNjgyMjU0MzkzLCJpYXQiOjE2ODIyNTA3OTN9.Jwg5jjobsLCaJy42aF0MzTpoA6ryfnw8SGiJCOdh5WI");
JWTPayload payload = jwt.getPayload();
System.out.println(payload);
JWTHeader header = jwt.getHeader();
System.out.println(header);
JSONObject payloads = jwt.getPayloads();
System.out.println(payloads);
System.out.println("**************************************");
}
}