mirror of
https://gitee.com/wangkang/udf.git
synced 2026-11-02 07:01:09 +00:00
修改
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
/**
|
||||
* Constant.java
|
||||
* Created at 2017-04-24
|
||||
* Created by Administrator
|
||||
* Copyright (C) 2016 itkk.org, All rights reserved.
|
||||
*/
|
||||
package org.itkk.udf.auth;
|
||||
|
||||
/**
|
||||
* 描述 : 常量
|
||||
*
|
||||
* @author Administrator
|
||||
*/
|
||||
public class Constant {
|
||||
|
||||
/**
|
||||
* 描述 : 头信息(rms应用名称)
|
||||
*/
|
||||
public static final String HEADER_USER_TYPE = "userType";
|
||||
|
||||
/**
|
||||
* 身份认证顺序
|
||||
*/
|
||||
public static final int ORDER_IDENTITY = 10000;
|
||||
|
||||
/**
|
||||
* 权限认证顺序
|
||||
*/
|
||||
public static final int ORDER_PURVIEW = 10001;
|
||||
|
||||
/**
|
||||
* rms认证顺序
|
||||
*/
|
||||
public static final int ORDER_RMS = 10002;
|
||||
|
||||
|
||||
/**
|
||||
* 描述 : 私有化构造函数
|
||||
*/
|
||||
private Constant() {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
package org.itkk.udf.auth;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 描述 : UserType
|
||||
*
|
||||
* @author wangkang
|
||||
*/
|
||||
public enum UserType {
|
||||
|
||||
/**
|
||||
* 描述 : 用户
|
||||
*/
|
||||
USER,
|
||||
/**
|
||||
* 描述 : 客户端
|
||||
*/
|
||||
CLIENT;
|
||||
|
||||
/**
|
||||
* mappings
|
||||
*/
|
||||
private static final Map<String, UserType> mappings = new HashMap<>();
|
||||
|
||||
/**
|
||||
* 静态块
|
||||
*/
|
||||
static {
|
||||
for (UserType userType : values()) {
|
||||
mappings.put(userType.name(), userType);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 转换为枚举类型
|
||||
*
|
||||
* @param userType 用户类型
|
||||
* @return 枚举
|
||||
*/
|
||||
public static UserType resolve(String userType) {
|
||||
return (userType != null ? mappings.get(userType) : null);
|
||||
}
|
||||
|
||||
/**
|
||||
* 匹配
|
||||
*
|
||||
* @param userType 用户类型
|
||||
* @return 匹配结果
|
||||
*/
|
||||
public boolean matches(String userType) {
|
||||
return (this == resolve(userType));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
package org.itkk.udf.auth.filter;
|
||||
|
||||
import com.netflix.zuul.ZuulFilter;
|
||||
import com.netflix.zuul.context.RequestContext;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.itkk.udf.auth.Constant;
|
||||
import org.itkk.udf.auth.UserType;
|
||||
import org.itkk.udf.core.exception.AuthException;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
import static com.netflix.zuul.context.RequestContext.getCurrentContext;
|
||||
|
||||
/**
|
||||
* AbstractBaseZuulFilter
|
||||
*/
|
||||
public abstract class AbstractBaseZuulFilter extends ZuulFilter {
|
||||
/**
|
||||
* 判断用户类型
|
||||
*
|
||||
* @param targetUserType 目标用户类型
|
||||
* @return 是否匹配
|
||||
*/
|
||||
public boolean checkUserType(UserType targetUserType) {
|
||||
//获得request
|
||||
RequestContext ctx = getCurrentContext();
|
||||
HttpServletRequest request = ctx.getRequest();
|
||||
//获得用户类型
|
||||
String userType = request.getHeader(Constant.HEADER_USER_TYPE);
|
||||
if (StringUtils.isBlank(userType)) {
|
||||
userType = request.getParameter(Constant.HEADER_USER_TYPE);
|
||||
}
|
||||
//判空
|
||||
if (StringUtils.isBlank(userType)) {
|
||||
throw new AuthException("must be set userType");
|
||||
}
|
||||
//匹配
|
||||
UserType userTypeEnum = UserType.resolve(userType);
|
||||
if (userTypeEnum == null) {
|
||||
throw new AuthException("unknow userType");
|
||||
}
|
||||
//判断是否拦截 & 返回
|
||||
return userTypeEnum.equals(targetUserType);
|
||||
}
|
||||
}
|
||||
+8
-5
@@ -1,7 +1,10 @@
|
||||
package org.itkk.udf.auth.filter.client;
|
||||
|
||||
import com.netflix.zuul.ZuulFilter;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.itkk.udf.auth.Constant;
|
||||
import org.itkk.udf.auth.UserType;
|
||||
import org.itkk.udf.auth.filter.AbstractBaseZuulFilter;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||
import org.springframework.cloud.netflix.zuul.filters.support.FilterConstants;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@@ -10,7 +13,8 @@ import org.springframework.stereotype.Component;
|
||||
*/
|
||||
@Component
|
||||
@Slf4j
|
||||
public class ClientIdentityFilter extends ZuulFilter {
|
||||
@ConditionalOnProperty(value = "org.itkk.auth.filter.client.identity.enabled", matchIfMissing = true)
|
||||
public class ClientIdentityFilter extends AbstractBaseZuulFilter {
|
||||
|
||||
@Override
|
||||
public Object run() {
|
||||
@@ -20,7 +24,7 @@ public class ClientIdentityFilter extends ZuulFilter {
|
||||
|
||||
@Override
|
||||
public boolean shouldFilter() {
|
||||
return true;
|
||||
return this.checkUserType(UserType.CLIENT);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -30,8 +34,7 @@ public class ClientIdentityFilter extends ZuulFilter {
|
||||
|
||||
@Override
|
||||
public int filterOrder() {
|
||||
final int order = 10000;
|
||||
return order;
|
||||
return Constant.ORDER_IDENTITY;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+8
-5
@@ -1,7 +1,10 @@
|
||||
package org.itkk.udf.auth.filter.client;
|
||||
|
||||
import com.netflix.zuul.ZuulFilter;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.itkk.udf.auth.Constant;
|
||||
import org.itkk.udf.auth.UserType;
|
||||
import org.itkk.udf.auth.filter.AbstractBaseZuulFilter;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||
import org.springframework.cloud.netflix.zuul.filters.support.FilterConstants;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@@ -10,7 +13,8 @@ import org.springframework.stereotype.Component;
|
||||
*/
|
||||
@Component
|
||||
@Slf4j
|
||||
public class ClientPurviewFilter extends ZuulFilter {
|
||||
@ConditionalOnProperty(value = "org.itkk.auth.filter.client.purviews.enabled", matchIfMissing = true)
|
||||
public class ClientPurviewFilter extends AbstractBaseZuulFilter {
|
||||
|
||||
@Override
|
||||
public Object run() {
|
||||
@@ -20,7 +24,7 @@ public class ClientPurviewFilter extends ZuulFilter {
|
||||
|
||||
@Override
|
||||
public boolean shouldFilter() {
|
||||
return true;
|
||||
return this.checkUserType(UserType.CLIENT);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -30,8 +34,7 @@ public class ClientPurviewFilter extends ZuulFilter {
|
||||
|
||||
@Override
|
||||
public int filterOrder() {
|
||||
final int order = 10001;
|
||||
return order;
|
||||
return Constant.ORDER_PURVIEW;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+4
-5
@@ -1,9 +1,9 @@
|
||||
package org.itkk.udf.auth.filter;
|
||||
package org.itkk.udf.auth.filter.rms;
|
||||
|
||||
import com.netflix.zuul.ZuulFilter;
|
||||
import com.netflix.zuul.context.RequestContext;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.itkk.udf.auth.filter.AbstractBaseZuulFilter;
|
||||
import org.itkk.udf.core.exception.AuthException;
|
||||
import org.itkk.udf.rms.Constant;
|
||||
import org.itkk.udf.rms.RmsProperties;
|
||||
@@ -22,7 +22,7 @@ import static com.netflix.zuul.context.RequestContext.getCurrentContext;
|
||||
*/
|
||||
@Component
|
||||
@Slf4j
|
||||
public class RmsFilter extends ZuulFilter {
|
||||
public class RmsFilter extends AbstractBaseZuulFilter {
|
||||
|
||||
/**
|
||||
* 描述 : 应用名称
|
||||
@@ -80,7 +80,6 @@ public class RmsFilter extends ZuulFilter {
|
||||
|
||||
@Override
|
||||
public int filterOrder() {
|
||||
final int order = 10002;
|
||||
return order;
|
||||
return org.itkk.udf.auth.Constant.ORDER_RMS;
|
||||
}
|
||||
}
|
||||
+8
-5
@@ -1,7 +1,10 @@
|
||||
package org.itkk.udf.auth.filter.user;
|
||||
|
||||
import com.netflix.zuul.ZuulFilter;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.itkk.udf.auth.Constant;
|
||||
import org.itkk.udf.auth.UserType;
|
||||
import org.itkk.udf.auth.filter.AbstractBaseZuulFilter;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||
import org.springframework.cloud.netflix.zuul.filters.support.FilterConstants;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@@ -10,7 +13,8 @@ import org.springframework.stereotype.Component;
|
||||
*/
|
||||
@Component
|
||||
@Slf4j
|
||||
public class UserIdentityFilter extends ZuulFilter {
|
||||
@ConditionalOnProperty(value = "org.itkk.auth.filter.user.identity.enabled", matchIfMissing = true)
|
||||
public class UserIdentityFilter extends AbstractBaseZuulFilter {
|
||||
|
||||
@Override
|
||||
public Object run() {
|
||||
@@ -20,7 +24,7 @@ public class UserIdentityFilter extends ZuulFilter {
|
||||
|
||||
@Override
|
||||
public boolean shouldFilter() {
|
||||
return true;
|
||||
return this.checkUserType(UserType.USER);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -30,8 +34,7 @@ public class UserIdentityFilter extends ZuulFilter {
|
||||
|
||||
@Override
|
||||
public int filterOrder() {
|
||||
final int order = 10000;
|
||||
return order;
|
||||
return Constant.ORDER_IDENTITY;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
package org.itkk.udf.auth.filter.user;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.itkk.udf.auth.Constant;
|
||||
import org.itkk.udf.auth.UserType;
|
||||
import org.itkk.udf.auth.filter.AbstractBaseZuulFilter;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||
import org.springframework.cloud.netflix.zuul.filters.support.FilterConstants;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* PurviewFilter
|
||||
*/
|
||||
@Component
|
||||
@Slf4j
|
||||
@ConditionalOnProperty(value = "org.itkk.auth.filter.user.purview.enabled", matchIfMissing = true)
|
||||
public class UserPurviewFilter extends AbstractBaseZuulFilter {
|
||||
|
||||
@Override
|
||||
public Object run() {
|
||||
log.info("UserPurviewFilter.run");
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldFilter() {
|
||||
return this.checkUserType(UserType.USER);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String filterType() {
|
||||
return FilterConstants.PRE_TYPE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int filterOrder() {
|
||||
return Constant.ORDER_PURVIEW;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user