如题,授权代码如下
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
log.info("正在对请求用户进行授权");
String token = (String) principals.getPrimaryPrincipal();
String openID = JwtUtil.getopenID(token);
SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();
//获取相应的角色和权限,详情见getRoleAndPermission()
RolePermission rolePermission = userService.getRoleAndPermission(openID);
//添加角色
log.info("【" + openID + "】" + "_添加角色_" + rolePermission.getRole());
info.addRole(rolePermission.getRole());
//添加权限
try {
JSONArray permissionArray = new JSONArray(rolePermission.getPermission());
for (int i = 0; i < permissionArray.length(); i++) {
log.info("正在添加权限:【"+permissionArray.getString(i)+"】");
info.addStringPermission(permissionArray.getString(i));
}
} catch (Exception e) {
e.printStackTrace();
}
return info;
}
控制台输出如下

我是真没看懂为什么会这样,debug看值,没看出啥问题(不太会用2333),不晓得有没有遇到过的大佬知道这个是怎么回事,或者可能是怎么回事,感谢
我网上找了很久,非正常情况下是这个问题,把下面这段代码注释后,就只会输出两次了,至于为什么还是会输出两次,请继续看
把上面这段注释后,还是是会输出两次的原因是(我的写法有问题),我后来改成了这种
但好像还是会触发两次,这次就不是代码问题了,先看注解
比如我这里是允许拥有身份为root或者admin的角色可操作,所以程序会执行两次,分别执行root,和admin,并不会因为第一个符合就不会执行第二个,所以输出了两次信息,如果有三个角色判断,就会输出三次,如上是我的结论