先放代码: https://git.oschina.net/alexgaoyh/alexgaoyh.git
今天在敲代码的过程中,突然发现之前整合的shiro权限框架有问题,doGetAuthorizationInfo() 方法一直没有被调用,后来发现,
1: doGetAuthorizationInfo()方法可以理解为是权限验证,
2: doGetAuthenticationInfo( AuthenticationToken token) 理解为登陆验证。
两者是不一样的:
登陆验证:
Subject subject = SecurityUtils.getSubject();
subject.login(token);
token.clear();
SysmanUser user = (SysmanUser) subject.getPrincipal();
权限验证:
//权限校验。判断是否包含权限。
Subject subject = SecurityUtils.getSubject();
//具体响应ShiroDbRealm。doGetAuthorizationInfo,判断是否包含此url的响应权限
boolean isPermitted = subject.isPermitted(url);
if(isPermitted == true) {
result = new Result(true, "包含权限");
}else{
result = new Result(false, "不包含权限");
}
这样的话,可以针对不同的请求进行权限验证,代码链接如上,具体页面效果如下。
无权限效果图:
有权限效果图: