springboot 集成spring security后 url拦截问题

登录后,获取用户权限的所有url,通过url对比档次请求的url是否有权限,但是对比返回ACCESS_ABSTAIN后,请求仍然可以正常进入,没有拦截住,什么原因呢?``... 登录后,获取用户权限的所有url,通过url对比档次请求的url是否有权限,但是对比返回 ACCESS_ABSTAIN后,请求仍然可以正常进入,没有拦截住,什么原因呢?

```
public class RoleBasedVoter implements AccessDecisionVoter<Object> {
@Override
public boolean supports(ConfigAttribute attribute) {
return true;
}

@Override
public int vote(Authentication authentication, Object object, Collection<ConfigAttribute> attributes) {
if(authentication == null) {
return ACCESS_DENIED;
}

Object principal = authentication.getPrincipal();
final HttpServletRequest request = ((FilterInvocation) object).getRequest();
int result = ACCESS_ABSTAIN;
if (principal instanceof SysUser) {
SysUser user = (SysUser) principal;
for (SysRole role : user.getRoles()) {
for (final SysFunction function : role.getFunctions()) {
if (function.getUrl() != null) {
if (new AntPathRequestMatcher(function.getUrl()).matches(request)) {
return ACCESS_GRANTED;
}
}
}
}
}
return ACCESS_ABSTAIN;
}

@Override
public boolean supports(Class clazz) {
return true;
}
}

```
展开
 我来答
加百列在微笑
2019-01-25 · TA获得超过634个赞
知道小有建树答主
回答量:518
采纳率:0%
帮助的人:141万
展开全部
AbstractAccessDecisionManager的子类使用了decide这个方法,你需要看AbstractAccessDecisionManager里面对于voter的结果如何处理的.
比如UnanimousBased.class
```
for (ConfigAttribute attribute : attributes) {
singleAttributeList.set(0, attribute);
for (AccessDecisionVoter voter : getDecisionVoters()) {
int result = voter.vote(authentication, object, singleAttributeList);
if (logger.isDebugEnabled()) {
logger.debug("Voter: " + voter + ", returned: " + result);
}
switch (result) {
case AccessDecisionVoter.ACCESS_GRANTED:
grant++;
break;
case AccessDecisionVoter.ACCESS_DENIED:
throw new AccessDeniedException(messages.getMessage(
"AbstractAccessDecisionManager.accessDenied",
"Access is denied"));
default:
abstain++;
break;
}
}
}
// To get this far, there were no deny votes
if (grant > 0) {
return;
}
```
主要看这边处理的....
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式