io.github.wslxm.springbootplus2.utils.XjAuthCacheKeyUtil Maven / Gradle / Ivy
The newest version!
package io.github.wslxm.springbootplus2.utils;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import io.github.wslxm.springbootplus2.core.utils.XjStringUtil;
/***
* 接口缓存的url 处理
*
* 权限 key 以 缓存key 处理/获取方法
*
* @author wangsong
* @mail [email protected]
* @date 2021/8/25 0025 10:51
* @version 1.0.1
*/
public class XjAuthCacheKeyUtil {
/**
* 获取缓存key(接口扫码缓存数据库数据)
*
* 项目启动或更新url权限时, 需要把url 当key进行缓存,用于权限认证, 由于path参数是动态参数, 把所有 path 的参数转为 $ 符号在进行缓存
*
* @author wangsong
* @param method
* @param uri
* @date 2021/8/25 0025 11:02
* @return java.lang.String
* @version 1.0.1
*/
public static String getCacheKey(String method, String uri) {
String[] uriArr = uri.split("/");
StringBuffer urlStr = new StringBuffer();
for (int i = 0; i < uriArr.length; i++) {
String urlParam = uriArr[i];
if (StringUtils.isNotBlank(urlParam)) {
urlStr.append("{".equals(urlParam.substring(0, 1)) ? "/$" : "/" + urlParam);
}
}
return method + ":" + urlStr.toString();
}
/**
* 获取缓存key(请求请求时)
*
* 接口请求时,获取权限url, 把 path 的数字参数转为 $ 号
*
* @author wangsong
* @param method
* @param uri
* @date 2021/8/25 0025 11:01
* @return java.lang.String
* @version 1.0.1
*/
public static String getAuthCacheKey(String method, String uri) {
String[] uriArr = uri.split("/");
StringBuffer urlStr = new StringBuffer();
for (int i = 0; i < uriArr.length; i++) {
String urlParam = uriArr[i];
if (StringUtils.isNotBlank(urlParam)) {
urlStr.append(XjStringUtil.isInteger(urlParam) ? "/$" : "/" + urlParam);
}
}
return method + ":" + urlStr.toString();
}
/**
* 验证接口 url 唯一标识
*
* 用于定义接口时的唯一性【同请求方式和接口名不能重复】,在项目启动时进行权限url扫描时会进行获取验证
*
*
* @param method 请求方式
* @param url 请求url
* @return
*/
public static String getAuthKey(String method, String url) {
return method + ":" + url;
}
}