From 813950e51a81713ec03dfc19a25c820fb8c0d2d8 Mon Sep 17 00:00:00 2001 From: xiangwb Date: Tue, 3 Apr 2018 13:41:10 +0800 Subject: [PATCH] merge --- .../java/com/xwbing/shiro/MyShiroRealm.java | 26 ++++++++++++++----- .../java/com/xwbing/shiro/ShiroConfig.java | 13 +++++++--- .../xwbing/shiro/UrlPermissionsFilter.java | 2 +- boot-web/src/main/resources/application.yml | 2 +- 4 files changed, 30 insertions(+), 13 deletions(-) diff --git a/boot-web/src/main/java/com/xwbing/shiro/MyShiroRealm.java b/boot-web/src/main/java/com/xwbing/shiro/MyShiroRealm.java index e53a16b..d717ec8 100644 --- a/boot-web/src/main/java/com/xwbing/shiro/MyShiroRealm.java +++ b/boot-web/src/main/java/com/xwbing/shiro/MyShiroRealm.java @@ -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 sysRoles = sysRoleService.listByUserIdEnable(user.getId(), "Y"); - Set roles = new HashSet<>(); - sysRoles.forEach(sysRole -> roles.add(sysRole.getName())); - info.setRoles(roles); +// List sysRoles = sysRoleService.listByUserIdEnable(user.getId(), "Y"); +// Set roles = new HashSet<>(); +// sysRoles.forEach(sysRole -> roles.add(sysRole.getName())); +// info.setRoles(roles); //用户的权限集合 Set permissions = new HashSet<>(); - List sysAuthorities = sysUserService.listAuthorityByIdAndEnable(user.getId(), "Y"); - sysAuthorities.forEach(sysAuthority -> permissions.add(sysAuthority.getUrl())); + List 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; } diff --git a/boot-web/src/main/java/com/xwbing/shiro/ShiroConfig.java b/boot-web/src/main/java/com/xwbing/shiro/ShiroConfig.java index 5590e7b..b19ac74 100644 --- a/boot-web/src/main/java/com/xwbing/shiro/ShiroConfig.java +++ b/boot-web/src/main/java/com/xwbing/shiro/ShiroConfig.java @@ -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(); diff --git a/boot-web/src/main/java/com/xwbing/shiro/UrlPermissionsFilter.java b/boot-web/src/main/java/com/xwbing/shiro/UrlPermissionsFilter.java index 13b66e0..abcab6e 100644 --- a/boot-web/src/main/java/com/xwbing/shiro/UrlPermissionsFilter.java +++ b/boot-web/src/main/java/com/xwbing/shiro/UrlPermissionsFilter.java @@ -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 { diff --git a/boot-web/src/main/resources/application.yml b/boot-web/src/main/resources/application.yml index 76ec36e..d869a6f 100644 --- a/boot-web/src/main/resources/application.yml +++ b/boot-web/src/main/resources/application.yml @@ -1,6 +1,6 @@ #server server: - port: 8088 + port: 8080 session: timeout: 3600 #单位秒 context-path: /