栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

过滤utils

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

过滤utils

package com.bigbug.bus.card.api.config;

import com.bigbug.bus.card.api.component.AuthTokenCacheVerify;
import com.bigbug.bus.card.api.model.Permission;
import com.bigbug.bus.card.api.model.SysUser;
import com.bigbug.bus.card.api.service.SysUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import javax.servlet.http.HttpServletRequest;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;


@Component()
public class AuthFilter {

private AuthTokenCacheVerify authTokenCacheVerify;
private SysUserService sysUserService;
private SysUser sysUser; // 当前用户
private List sysUserPermissions = new ArrayList<>(); //当前用户的所有权限
public Map map = new HashMap<>(); // 每个资源所对应的权限ID

@Autowired
public AuthFilter(AuthTokenCacheVerify authTokenCacheVerify, SysUserService sysUserService) {
this.authTokenCacheVerify = authTokenCacheVerify;
this.sysUserService = sysUserService;
init();
}

private List getPattern(String… pattern) {
List patterns = new ArrayList<>();
for (String s : pattern) {
patterns.add(Pattern.compile(s));
}
return patterns;
}

private boolean isInclude(String url, List patterns) {
if (patterns != null) {
for (Pattern pattern : patterns) {
Matcher matcher = pattern.matcher(url);
if (matcher.matches()) {
return true;
}
}
}
return false;
}

private void getSysUserPermission(String token) {
String loginSysUserId = authTokenCacheVerify.getSysUserId(token);
Optional sysUserOptional = sysUserService.findById(loginSysUserId);
sysUser = sysUserOptional.get();
Set permissions = sysUser.getRole().getPermissions();
if (permissions != null || permissions.size() > 0) {
for (Permission permission : permissions) {
sysUserPermissions.add(permission.getId());
}
}
}

public void init(){
map.put(getPattern(".custumer/."), PermissionEnum.YHGL.getId());
map.put(getPattern(".device/."), PermissionEnum.SBGL.getId());
map.put(getPattern(".withdrawal/approval/."), PermissionEnum.TXSP.getId());
map.put(getPattern(".*custumer/detail",".*order/cardReader"), PermissionEnum.ZHGL.getId());
map.put(getPattern(".order/."), PermissionEnum.ZHXQ.getId());
map.put(getPattern(".log/."), PermissionEnum.RZSP.getId());
map.put(getPattern(".sys-user/."), PermissionEnum.YGGL.getId());
map.put(getPattern(".role/."), PermissionEnum.QXGL.getId());
map.put(getPattern(".setting/."), PermissionEnum.XTSZ.getId());
map.put(getPattern(".statistics/."),PermissionEnum.SY.getId());
map.put(getPattern(".statistics/."),PermissionEnum.TJ.getId());
map.put(getPattern(".*sys-user/updatePassword"),PermissionEnum.MMXG.getId());
map.put(getPattern(".statistics/."),PermissionEnum.YSTJ.getId());
map.put(getPattern(".statistics/."),PermissionEnum.SZTJ.getId());
}

public boolean verfyAuth(HttpServletRequest request){
System.out.println(“开始验证权限”);
String requestURI = request.getRequestURI();
if (requestURI.startsWith("/") && requestURI.length() > 1) {
requestURI = requestURI.substring(1);
}
String token = request.getHeader(“token”);
// 或取当前用户的权限
getSysUserPermission(token);
Set lists = map.keySet();
// 当前请求所对象的权限
for (List list : lists) {
if (isInclude(requestURI, list)) {
String per = map.get(list);
// 当前用户有权限:放行;否则提示无权限
if (sysUserPermissions.contains(per)) {
System.out.println(“权限验证通过–请求继续”);
return true;
} else {
System.out.println(“权限验证—不具有对应权限”);
return false;
}
}
}
System.out.println(“权限验证—不具有对应权限”);
return false;
}

}

}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/755915.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号