过滤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;

/**

  • @create 2021-12-11 17:30

  • @description:

  • @version: 1.0.0
    */
    @Component()
    public class AuthFilter {

    private AuthTokenCacheVerify authTokenCacheVerify;
    private SysUserService sysUserService;
    private SysUser sysUser; // 当前用户
    private List sysUserPermissions = new ArrayList<>(); //当前用户的所有权限
    public Map<List, String> 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<List> 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;
    }

}

}

C#中的Utils类通常用于包含各种帮助方法和常用功能。这个类可以有很多不同的实现方式,但通常它会包含一组静态方法,这些方法可以用于执行各种常见的任务,例如: 1. 字符串操作:包括字符串转换、替换、比较、编码、解码等。 2. 文件操作:包括文件读写、复制、重命名、删除、移动等。 3. 数据操作:包括数据类型转换、格式化、排序、过滤等。 4. 时间日期操作:包括日期格式化、计算、比较等。 5. 系统操作:包括获取系统信息、运行外部程序、显示消息框等。 下面是一个示例Utils类的代码: ```csharp public static class Utils { public static string ReverseString(string str) { char[] arr = str.ToCharArray(); Array.Reverse(arr); return new string(arr); } public static void CopyDirectory(string sourceDir, string destDir) { DirectoryInfo dir = new DirectoryInfo(sourceDir); if (!dir.Exists) { return; } if (!Directory.Exists(destDir)) { Directory.CreateDirectory(destDir); } foreach (FileInfo file in dir.GetFiles()) { string destPath = Path.Combine(destDir, file.Name); file.CopyTo(destPath, true); } foreach (DirectoryInfo subdir in dir.GetDirectories()) { string destPath = Path.Combine(destDir, subdir.Name); CopyDirectory(subdir.FullName, destPath); } } } ``` 这个Utils类包含两个静态方法:ReverseString和CopyDirectory。ReverseString方法接受一个字符串并返回反转后的字符串。CopyDirectory方法接受两个目录路径,并将源目录中的所有文件和子目录复制到目标目录中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值