This commit is contained in:
xiangwb
2018-04-03 13:41:10 +08:00
parent 7d3b129d20
commit 813950e51a
4 changed files with 30 additions and 13 deletions
@@ -1,10 +1,13 @@
package com.xwbing.shiro;
import com.xwbing.constant.CommonConstant;
import com.xwbing.constant.CommonEnum;
import com.xwbing.domain.entity.sys.SysAuthority;
import com.xwbing.domain.entity.sys.SysRole;
import com.xwbing.domain.entity.sys.SysUser;
import com.xwbing.service.sys.SysAuthorityService;
import com.xwbing.service.sys.SysRoleService;
import com.xwbing.service.sys.SysUserService;
import org.apache.commons.collections.CollectionUtils;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.AuthenticationInfo;
import org.apache.shiro.authc.AuthenticationToken;
@@ -34,6 +37,8 @@ public class MyShiroRealm extends AuthorizingRealm {
private SysUserService sysUserService;
@Resource
private SysRoleService sysRoleService;
@Resource
private SysAuthorityService sysAuthorityService;
/**
* 授权用户权限(授权)
@@ -53,14 +58,21 @@ public class MyShiroRealm extends AuthorizingRealm {
// 权限信息对象info,用来存放查出的用户的所有的角色(role)及权限(permission)
SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();
// 用户的角色集合
List<SysRole> sysRoles = sysRoleService.listByUserIdEnable(user.getId(), "Y");
Set<String> roles = new HashSet<>();
sysRoles.forEach(sysRole -> roles.add(sysRole.getName()));
info.setRoles(roles);
// List<SysRole> sysRoles = sysRoleService.listByUserIdEnable(user.getId(), "Y");
// Set<String> roles = new HashSet<>();
// sysRoles.forEach(sysRole -> roles.add(sysRole.getName()));
// info.setRoles(roles);
//用户的权限集合
Set<String> permissions = new HashSet<>();
List<SysAuthority> sysAuthorities = sysUserService.listAuthorityByIdAndEnable(user.getId(), "Y");
sysAuthorities.forEach(sysAuthority -> permissions.add(sysAuthority.getUrl()));
List<SysAuthority> sysAuthorities;
if (CommonConstant.IS_ENABLE.equalsIgnoreCase(user.getAdmin())) {
sysAuthorities = sysAuthorityService.listByEnable(CommonEnum.YesOrNoEnum.YES.getCode());
} else {
sysAuthorities = sysUserService.listAuthorityByIdAndEnable(user.getId(), "Y");
}
if (CollectionUtils.isNotEmpty(sysAuthorities)) {
sysAuthorities.forEach(sysAuthority -> permissions.add(sysAuthority.getUrl()));
}
info.setStringPermissions(permissions);
return info;
}
@@ -198,19 +198,24 @@ public class ShiroConfig {
// return simpleCookie;
// }
@Bean
public FilterRegistrationBean urlPermissionsFilterRegistrationBean() {
FilterRegistrationBean registration = new FilterRegistrationBean(urlPermissionsFilter());
public FilterRegistrationBean urlPermissionsFilterRegistrationBean(UrlPermissionsFilter urlPermissionsFilter) {
FilterRegistrationBean registration = new FilterRegistrationBean(urlPermissionsFilter);
//设置不自动在在配置时执行,默认是true
registration.setEnabled(false);
return registration;
}
@Bean
@Bean(name = "urlPermissionsFilter")
public UrlPermissionsFilter urlPermissionsFilter() {
return new UrlPermissionsFilter();
}
/**
* AOP式方法级权限检查
*
* @param securityManager
* @return
*/
@Bean
public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager) {
AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor = new AuthorizationAttributeSourceAdvisor();
@@ -27,7 +27,7 @@ public class UrlPermissionsFilter extends PermissionsAuthorizationFilter {
private SysAuthorityService sysAuthorityService;
/**
* @param mappedValue 指的是在声明url时指定的权限字符串,如 我们要动态产生这个权限字符串,
* @param mappedValue 指的是在声明url时指定的权限字符串,我们要动态产生这个权限字符串,
*/
@Override
public boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue) throws IOException {
+1 -1
View File
@@ -1,6 +1,6 @@
#server
server:
port: 8088
port: 8080
session:
timeout: 3600 #单位秒
context-path: /