From 02e2e855803438dc25217823fbfdec1828a6f7cd Mon Sep 17 00:00:00 2001 From: HuangYuhui Date: Tue, 13 Aug 2019 14:04:19 +0800 Subject: [PATCH 01/27] :art: style : add the code comment --- .../shiro/credentials/CredentialsMatcher.java | 10 ++++++- .../business/shiro/realm/ShiroRealm.java | 14 ++++++---- .../java/com/zyd/shiro/util/PasswordUtil.java | 27 ++++++++++--------- 3 files changed, 32 insertions(+), 19 deletions(-) diff --git a/shiro-core/src/main/java/com/zyd/shiro/business/shiro/credentials/CredentialsMatcher.java b/shiro-core/src/main/java/com/zyd/shiro/business/shiro/credentials/CredentialsMatcher.java index a57dd2b..a2b24b6 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/business/shiro/credentials/CredentialsMatcher.java +++ b/shiro-core/src/main/java/com/zyd/shiro/business/shiro/credentials/CredentialsMatcher.java @@ -36,14 +36,22 @@ */ public class CredentialsMatcher extends SimpleCredentialsMatcher { + /** + * @description: 用户密码加密 + * @param: token 用户登录信息 + * @param: info 用户认证信息 + * @date: 2019-08-13 1:12 PM + * @return: boolean + */ @Override public boolean doCredentialsMatch(AuthenticationToken token, AuthenticationInfo info) { UsernamePasswordToken utoken = (UsernamePasswordToken) token; //获得用户输入的密码:(可以采用加盐(salt)的方式去检验) String inPassword = new String(utoken.getPassword()); - //获得数据库中的密码 + //根据用户的认证信息获得数据库中的密码 String dbPassword = (String) info.getCredentials(); try { + //解密数据库中的用户密码 dbPassword = PasswordUtil.decrypt(dbPassword, utoken.getUsername()); } catch (Exception e) { e.printStackTrace(); diff --git a/shiro-core/src/main/java/com/zyd/shiro/business/shiro/realm/ShiroRealm.java b/shiro-core/src/main/java/com/zyd/shiro/business/shiro/realm/ShiroRealm.java index eb9de16..88b484a 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/business/shiro/realm/ShiroRealm.java +++ b/shiro-core/src/main/java/com/zyd/shiro/business/shiro/realm/ShiroRealm.java @@ -62,7 +62,10 @@ public class ShiroRealm extends AuthorizingRealm { private SysRoleService roleService; /** - * 提供账户信息返回认证信息(用户的角色信息集合) + * @description: 登录认证:提供帐户信息,返回认证信息(用户的角色信息集合) + * @param: token + * @date: 2019-08-13 1:33 PM + * @return: org.apache.shiro.authc.AuthenticationInfo */ @Override protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException { @@ -86,21 +89,22 @@ protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) } /** - * 权限认证,为当前登录的Subject授予角色和权限(角色的权限信息集合) + * @description: 授权认证:提供用户信息(当前登录的Subject),返回权限信息(角色的权限信息集合) + * @param: principalCollection + * @date: 2019-08-13 1:34 PM + * @return: org.apache.shiro.authz.AuthorizationInfo */ @Override protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) { // 权限信息对象info,用来存放查出的用户的所有的角色(role)及权限(permission) SimpleAuthorizationInfo info = new SimpleAuthorizationInfo(); - + //获取用户id Long userId = (Long) SecurityUtils.getSubject().getPrincipal(); - // 赋予角色 List roleList = roleService.listRolesByUserId(userId); for (Role role : roleList) { info.addRole(role.getName()); } - // 赋予权限 List resourcesList = null; User user = userService.getByPrimaryKey(userId); diff --git a/shiro-core/src/main/java/com/zyd/shiro/util/PasswordUtil.java b/shiro-core/src/main/java/com/zyd/shiro/util/PasswordUtil.java index 80c566e..cf4f86d 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/util/PasswordUtil.java +++ b/shiro-core/src/main/java/com/zyd/shiro/util/PasswordUtil.java @@ -22,32 +22,33 @@ import com.zyd.shiro.business.consts.CommonConst; /** - * @author: yadong.zhang + * @project: springboot-shiro + * @description: 用户密码加密/解密工具 * @date: 2017/12/15 17:03 + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ public class PasswordUtil { /** - * AES 加密 - * @param password - * 未加密的密码 - * @param salt - * 盐值,默认使用用户名就可 - * @return * @throws Exception + * @description: AES 加密 + * @param: password 未加密的用户密码 + * @param: salt 默认使用用户名作为盐值 + * @date: 2019-08-13 1:15 PM + * @return: java.lang.String */ public static String encrypt(String password, String salt) throws Exception { return AesUtil.encrypt(Md5Util.MD5(salt + CommonConst.ZYD_SECURITY_KEY), password); } /** - * AES 解密 - * @param encryptPassword - * 加密后的密码 - * @param salt - * 盐值,默认使用用户名就可 - * @return * @throws Exception + * @description: AES 解密 + * @param: encryptPassword 加密后的用户密码 + * @param: salt 默认使用用户名作为盐值 + * @date: 2019-08-13 1:17 PM + * @return: java.lang.String */ public static String decrypt(String encryptPassword, String salt) throws Exception { return AesUtil.decrypt(Md5Util.MD5(salt + CommonConst.ZYD_SECURITY_KEY), encryptPassword); From a973c4e519b2c1651f8f3afc5c86b87a18895444 Mon Sep 17 00:00:00 2001 From: HuangYuhui Date: Wed, 14 Aug 2019 16:29:44 +0800 Subject: [PATCH 02/27] :art: style(mapper) : add the code comment --- .../persistence/mapper/SysResourceMapper.java | 57 +++- .../persistence/mapper/SysRoleMapper.java | 33 ++- .../mapper/SysRoleResourcesMapper.java | 18 +- .../persistence/mapper/SysUserMapper.java | 30 ++- .../persistence/mapper/SysUserRoleMapper.java | 26 +- .../resources/mybatis/SysResourceMapper.xml | 246 +++++++++--------- .../main/resources/mybatis/SysRoleMapper.xml | 122 +++++---- .../main/resources/mybatis/SysUserMapper.xml | 164 ++++++------ .../resources/mybatis/SysUserRoleMapper.xml | 17 +- 9 files changed, 379 insertions(+), 334 deletions(-) diff --git a/shiro-core/src/main/java/com/zyd/shiro/persistence/mapper/SysResourceMapper.java b/shiro-core/src/main/java/com/zyd/shiro/persistence/mapper/SysResourceMapper.java index bdc52ce..eca6aaa 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/persistence/mapper/SysResourceMapper.java +++ b/shiro-core/src/main/java/com/zyd/shiro/persistence/mapper/SysResourceMapper.java @@ -28,39 +28,68 @@ import java.util.Map; /** - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @website https://www.zhyd.me - * @version 1.0 - * @date 2018/4/16 16:26 - * @since 1.0 + * @project: springboot-shiro + * @description: 操控系统资源信息 + * @date: 2019-08-14 3:06 PM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ @Repository public interface SysResourceMapper extends BaseMapper { /** - * 分页查询 - * - * @param vo - * @return + * @description: 分页查询系统资源 + * @param: vo + * @date: 2019-08-14 3:08 PM + * @return: java.util.List */ List findPageBreakByCondition(ResourceConditionVO vo); + /** + * @description: 获取用户的资源列表 + * @param: map + * @date: 2019-08-14 3:10 PM + * @return: java.util.List + */ List listUserResources(Map map); /** - * 该节代码参考自http://blog.csdn.net/poorcoder_/article/details/71374002 - * 感谢网友 - * - * @param rid - * @return + * @description: 根据角色id获取ztree使用的资源列表, 代码参考自 http://blog.csdn.net/poorcoder_/article/details/71374002 + * @param: rid + * @date: 2019-08-14 3:12 PM + * @return: java.util.List */ List queryResourcesListWithSelected(Long rid); + /** + * @description: 获取资源的url和Permission + * @param: + * @date: 2019-08-14 3:13 PM + * @return: java.util.List + */ List listUrlAndPermission(); + /** + * @description: 获取所有可用的菜单资源 + * @param: + * @date: 2019-08-14 3:15 PM + * @return: java.util.List + */ List listAllAvailableMenu(); + /** + * @description: 通过父级菜单id获取父级资源下所有menu资源 + * @param: pid + * @date: 2019-08-14 3:16 PM + * @return: java.util.List + */ List listMenuResourceByPid(Long pid); + /** + * @description: 通过用户id获取用户关联的所有资源 + * @param: userId + * @date: 2019-08-14 3:18 PM + * @return: java.util.List + */ List listByUserId(Long userId); } diff --git a/shiro-core/src/main/java/com/zyd/shiro/persistence/mapper/SysRoleMapper.java b/shiro-core/src/main/java/com/zyd/shiro/persistence/mapper/SysRoleMapper.java index 4a9058b..56ab172 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/persistence/mapper/SysRoleMapper.java +++ b/shiro-core/src/main/java/com/zyd/shiro/persistence/mapper/SysRoleMapper.java @@ -27,31 +27,36 @@ import java.util.List; /** - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @website https://www.zhyd.me - * @version 1.0 - * @date 2018/4/16 16:26 - * @since 1.0 + * @project: springboot-shiro + * @description: 操控系统角色信息 + * @date: 2019-08-14 2:48 PM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ @Repository public interface SysRoleMapper extends BaseMapper { /** - * 分页查询 - * - * @param vo - * @return + * @description: 分页查询角色信息 + * @param: vo + * @date: 2019-08-14 2:49 PM + * @return: java.util.List */ List findPageBreakByCondition(RoleConditionVO vo); /** - * 该节代码参考自http://blog.csdn.net/poorcoder_/article/details/71374002 - * 感谢网友 - * - * @param userId - * @return + * @description: 通过用户id获取ztree使用的角色列表, 代码参考自 http://blog.csdn.net/poorcoder_/article/details/71374002 + * @param: userId + * @date: 2019-08-14 2:50 PM + * @return: java.util.List */ List queryRoleListWithSelected(Integer userId); + /** + * @description: 通过用户id获取用户所拥有的角色信息 + * @param: userId + * @date: 2019-08-14 2:51 PM + * @return: java.util.List + */ List listRolesByUserId(Long userId); } diff --git a/shiro-core/src/main/java/com/zyd/shiro/persistence/mapper/SysRoleResourcesMapper.java b/shiro-core/src/main/java/com/zyd/shiro/persistence/mapper/SysRoleResourcesMapper.java index b2915e3..854248a 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/persistence/mapper/SysRoleResourcesMapper.java +++ b/shiro-core/src/main/java/com/zyd/shiro/persistence/mapper/SysRoleResourcesMapper.java @@ -1,18 +1,18 @@ /** * MIT License - * + *

* Copyright (c) 2018 yadong.zhang - * + *

* Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * + *

* The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. - * + *

* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -28,11 +28,11 @@ import org.springframework.stereotype.Repository; /** - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @website https://www.zhyd.me - * @version 1.0 - * @date 2018/4/16 16:26 - * @since 1.0 + * @project: springboot-shiro + * @description: 角色与资源信息的连表操作 + * @date: 2019-08-14 3:39 PM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ @Repository public interface SysRoleResourcesMapper extends BaseMapper { diff --git a/shiro-core/src/main/java/com/zyd/shiro/persistence/mapper/SysUserMapper.java b/shiro-core/src/main/java/com/zyd/shiro/persistence/mapper/SysUserMapper.java index 524d9bf..ad88f30 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/persistence/mapper/SysUserMapper.java +++ b/shiro-core/src/main/java/com/zyd/shiro/persistence/mapper/SysUserMapper.java @@ -1,18 +1,18 @@ /** * MIT License - * + *

* Copyright (c) 2018 yadong.zhang - * + *

* Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * + *

* The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. - * + *

* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -31,17 +31,29 @@ import java.util.List; /** - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @website https://www.zhyd.me - * @version 1.0 - * @date 2018/4/16 16:26 - * @since 1.0 + * @project: springboot-shiro + * @description: 操控系统用户信息 + * @date: 2019-08-14 2:47 PM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ @Repository public interface SysUserMapper extends BaseMapper { + /** + * @description: 分页查询用户信息 + * @param: vo + * @date: 2019-08-14 2:34 PM + * @return: java.util.List + */ List findPageBreakByCondition(UserConditionVO vo); + /** + * @description: 通过角色Id获取用户列表 + * @param: roleId + * @date: 2019-08-14 2:34 PM + * @return: java.util.List + */ List listByRoleId(Long roleId); } diff --git a/shiro-core/src/main/java/com/zyd/shiro/persistence/mapper/SysUserRoleMapper.java b/shiro-core/src/main/java/com/zyd/shiro/persistence/mapper/SysUserRoleMapper.java index 54a5fa2..55d5375 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/persistence/mapper/SysUserRoleMapper.java +++ b/shiro-core/src/main/java/com/zyd/shiro/persistence/mapper/SysUserRoleMapper.java @@ -1,18 +1,18 @@ /** * MIT License - * + *

* Copyright (c) 2018 yadong.zhang - * + *

* Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * + *

* The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. - * + *

* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -29,14 +29,22 @@ import java.util.List; + /** - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @website https://www.zhyd.me - * @version 1.0 - * @date 2018/4/16 16:26 - * @since 1.0 + * @project: springboot-shiro + * @description: 用户与角色信息的连表操作 + * @date: 2019-08-14 2:59 PM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ @Repository public interface SysUserRoleMapper extends BaseMapper { + + /** + * @description: (never used)通过角色id查询指定的用户信息 + * @param: roleId + * @date: 2019-08-14 3:04 PM + * @return: java.util.List + */ List findUserIdByRoleId(Integer roleId); } diff --git a/shiro-core/src/main/resources/mybatis/SysResourceMapper.xml b/shiro-core/src/main/resources/mybatis/SysResourceMapper.xml index af2afaa..1708a96 100644 --- a/shiro-core/src/main/resources/mybatis/SysResourceMapper.xml +++ b/shiro-core/src/main/resources/mybatis/SysResourceMapper.xml @@ -1,7 +1,10 @@ - + + @@ -14,6 +17,7 @@ + @@ -24,7 +28,9 @@ - + + @@ -36,163 +42,149 @@ + + + + + + SELECT re.id, + re.`name`, + re.parent_id, + re.url, + re.type, + re.icon, + ( + CASE + WHEN EXISTS( + SELECT 1 + FROM sys_role_resources rr + WHERE rr.resources_id = re.id + AND rr.role_id = #{rid} + ) + THEN + 'true' + ELSE + 'false' + END + ) AS checked + FROM sys_resources re + ORDER BY re.sort ASC + + + SELECT r.id, + r.`name`, + node.id AS node_id, + node.`name` AS node_name, + node.parent_id + FROM sys_resources r + LEFT JOIN sys_resources node ON ( + node.parent_id = r.id + AND node.available = 1 + AND node.type = 'menu' + ) + WHERE r.available = 1 + AND r.type = 'menu' + AND (r.url IS NULL OR r.url = '') + AND (r.permission IS NULL OR r.permission = '') + ORDER BY r.sort ASC, + node.sort ASC + + + ORDER BY re.sort ASC + + + SELECT re.id, + re.`name`, + re.parent_id, + re.url, + re.permission, + re.icon, + re.sort + FROM sys_resources re + INNER JOIN sys_role_resources rr ON re.id = rr.resources_id + INNER JOIN sys_user_role ur ON rr.role_id = ur.role_id + WHERE ur.user_id = #{userId} + AND re.available = 1 + ORDER BY re.parent_id ASC, + re.sort ASC + - diff --git a/shiro-core/src/main/resources/mybatis/SysRoleMapper.xml b/shiro-core/src/main/resources/mybatis/SysRoleMapper.xml index 52a5508..c7b0a6c 100644 --- a/shiro-core/src/main/resources/mybatis/SysRoleMapper.xml +++ b/shiro-core/src/main/resources/mybatis/SysRoleMapper.xml @@ -1,69 +1,65 @@ - + - - - - - - - - - + + + + + + + + - + + - - + + + + + diff --git a/shiro-core/src/main/resources/mybatis/SysUserMapper.xml b/shiro-core/src/main/resources/mybatis/SysUserMapper.xml index 7ba7326..7c410ca 100644 --- a/shiro-core/src/main/resources/mybatis/SysUserMapper.xml +++ b/shiro-core/src/main/resources/mybatis/SysUserMapper.xml @@ -1,88 +1,90 @@ - + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - + + - + + - diff --git a/shiro-core/src/main/resources/mybatis/SysUserRoleMapper.xml b/shiro-core/src/main/resources/mybatis/SysUserRoleMapper.xml index b77b764..2e13a97 100644 --- a/shiro-core/src/main/resources/mybatis/SysUserRoleMapper.xml +++ b/shiro-core/src/main/resources/mybatis/SysUserRoleMapper.xml @@ -1,6 +1,10 @@ + + @@ -8,13 +12,10 @@ - + - \ No newline at end of file + From b75a8c09b177a6b2780393c7aa2fa94f7b141e8f Mon Sep 17 00:00:00 2001 From: HuangYuhui Date: Wed, 14 Aug 2019 16:31:26 +0800 Subject: [PATCH 03/27] :art: style(beans) : add the code comment --- .../com/zyd/shiro/persistence/beans/SysResources.java | 10 +++++----- .../java/com/zyd/shiro/persistence/beans/SysRole.java | 10 +++++----- .../zyd/shiro/persistence/beans/SysRoleResources.java | 10 +++++----- .../java/com/zyd/shiro/persistence/beans/SysUser.java | 10 +++++----- .../com/zyd/shiro/persistence/beans/SysUserRole.java | 10 +++++----- 5 files changed, 25 insertions(+), 25 deletions(-) diff --git a/shiro-core/src/main/java/com/zyd/shiro/persistence/beans/SysResources.java b/shiro-core/src/main/java/com/zyd/shiro/persistence/beans/SysResources.java index ff2797a..3508bac 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/persistence/beans/SysResources.java +++ b/shiro-core/src/main/java/com/zyd/shiro/persistence/beans/SysResources.java @@ -27,11 +27,11 @@ import java.util.List; /** - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @website https://www.zhyd.me - * @version 1.0 - * @date 2018/4/16 16:26 - * @since 1.0 + * @project: springboot-shiro + * @description: 资源信息 + * @date: 2019-08-14 2:19 PM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ @Data @EqualsAndHashCode(callSuper = false) diff --git a/shiro-core/src/main/java/com/zyd/shiro/persistence/beans/SysRole.java b/shiro-core/src/main/java/com/zyd/shiro/persistence/beans/SysRole.java index 0a07911..83b9911 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/persistence/beans/SysRole.java +++ b/shiro-core/src/main/java/com/zyd/shiro/persistence/beans/SysRole.java @@ -26,11 +26,11 @@ import javax.persistence.Transient; /** - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @website https://www.zhyd.me - * @version 1.0 - * @date 2018/4/16 16:26 - * @since 1.0 + * @project: springboot-shiro + * @description: 角色信息 + * @date: 2019-08-14 2:22 PM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ @Data @EqualsAndHashCode(callSuper = false) diff --git a/shiro-core/src/main/java/com/zyd/shiro/persistence/beans/SysRoleResources.java b/shiro-core/src/main/java/com/zyd/shiro/persistence/beans/SysRoleResources.java index c5933f0..ab1d37f 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/persistence/beans/SysRoleResources.java +++ b/shiro-core/src/main/java/com/zyd/shiro/persistence/beans/SysRoleResources.java @@ -24,11 +24,11 @@ import lombok.EqualsAndHashCode; /** - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @website https://www.zhyd.me - * @version 1.0 - * @date 2018/4/16 16:26 - * @since 1.0 + * @project: springboot-shiro + * @description: 连接用户与资源信息的桥梁 + * @date: 2019-08-14 2:23 PM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ @Data @EqualsAndHashCode(callSuper = false) diff --git a/shiro-core/src/main/java/com/zyd/shiro/persistence/beans/SysUser.java b/shiro-core/src/main/java/com/zyd/shiro/persistence/beans/SysUser.java index 0f6f653..f5c5c41 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/persistence/beans/SysUser.java +++ b/shiro-core/src/main/java/com/zyd/shiro/persistence/beans/SysUser.java @@ -26,11 +26,11 @@ import java.util.Date; /** - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @website https://www.zhyd.me - * @version 1.0 - * @date 2018/4/16 16:26 - * @since 1.0 + * @project: springboot-shiro + * @description: 用户信息 + * @date: 2019-08-14 1:56 PM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ @Data @EqualsAndHashCode(callSuper = false) diff --git a/shiro-core/src/main/java/com/zyd/shiro/persistence/beans/SysUserRole.java b/shiro-core/src/main/java/com/zyd/shiro/persistence/beans/SysUserRole.java index c6b8860..2698c8a 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/persistence/beans/SysUserRole.java +++ b/shiro-core/src/main/java/com/zyd/shiro/persistence/beans/SysUserRole.java @@ -24,11 +24,11 @@ import lombok.EqualsAndHashCode; /** - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @website https://www.zhyd.me - * @version 1.0 - * @date 2018/4/16 16:26 - * @since 1.0 + * @project: springboot-shiro + * @description: 连接用户与角色信息的桥梁 + * @date: 2019-08-14 2:32 PM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ @Data @EqualsAndHashCode(callSuper = false) From 9b4fb4bbd58807613b50aa8876e796d98ad0cfa8 Mon Sep 17 00:00:00 2001 From: HuangYuhui Date: Wed, 14 Aug 2019 16:32:36 +0800 Subject: [PATCH 04/27] :art: style(service) : add the code comment --- .../shiro/business/service/ShiroService.java | 36 +++++----- .../business/service/SysResourcesService.java | 65 ++++++++++--------- .../service/SysRoleResourcesService.java | 28 ++++---- .../business/service/SysRoleService.java | 36 +++++----- .../business/service/SysUserRoleService.java | 28 ++++---- .../business/service/SysUserService.java | 44 ++++++------- 6 files changed, 120 insertions(+), 117 deletions(-) diff --git a/shiro-core/src/main/java/com/zyd/shiro/business/service/ShiroService.java b/shiro-core/src/main/java/com/zyd/shiro/business/service/ShiroService.java index 7bc1d66..352249d 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/business/service/ShiroService.java +++ b/shiro-core/src/main/java/com/zyd/shiro/business/service/ShiroService.java @@ -24,37 +24,43 @@ import java.util.Map; /** - * Shiro-权限相关的业务处理 - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 1.0 - * @website https://www.zhyd.me - * @date 2018/4/25 14:37 - * @since 1.0 + * @project: springboot-shiro + * @description: Shiro-权限相关的业务处理 + * @date: 2019-08-14 3:57 PM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ public interface ShiroService { /** - * 初始化权限 + * @description: 初始化权限 + * @param: + * @date: 2019-08-14 3:53 PM + * @return: java.util.Map */ Map loadFilterChainDefinitions(); /** - * 重新加载权限 + * @description: 重新加载权限 + * @param: + * @date: 2019-08-14 3:53 PM + * @return: void */ void updatePermission(); /** - * 重新加载用户权限 - * - * @param user + * @description: 重新加载用户权限 + * @param: user + * @date: 2019-08-14 3:54 PM + * @return: void */ void reloadAuthorizingByUserId(User user); /** - * 重新加载所有拥有roleId角色的用户的权限 - * - * @param roleId + * @description: 重新加载所有拥有roleId角色的用户的权限 + * @param: roleId + * @date: 2019-08-14 3:54 PM + * @return: void */ void reloadAuthorizingByRoleId(Long roleId); diff --git a/shiro-core/src/main/java/com/zyd/shiro/business/service/SysResourcesService.java b/shiro-core/src/main/java/com/zyd/shiro/business/service/SysResourcesService.java index e197ff5..d77958f 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/business/service/SysResourcesService.java +++ b/shiro-core/src/main/java/com/zyd/shiro/business/service/SysResourcesService.java @@ -28,66 +28,67 @@ import java.util.Map; /** - * 系统资源 - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 1.0 - * @website https://www.zhyd.me - * @date 2018/4/16 16:26 - * @since 1.0 + * @project: springboot-shiro + * @description: 系统资源相关的业务处理 + * @date: 2019-08-14 4:05 PM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ public interface SysResourcesService extends AbstractService { /** - * 分页查询 - * - * @param vo - * @return + * @description: 分页查询资源列表 + * @param: vo + * @date: 2019-08-14 4:05 PM + * @return: com.github.pagehelper.PageInfo */ PageInfo findPageBreakByCondition(ResourceConditionVO vo); /** - * 获取用户的资源列表 - * - * @param map - * @return + * @description: 获取用户所拥有的资源列表 + * @param: map + * @date: 2019-08-14 4:06 PM + * @return: java.util.List */ List listUserResources(Map map); /** - * 获取ztree使用的资源列表 - * - * @param rid - * @return + * @description: 通过角色id获取ztree使用的资源列表 + * @param: rid + * @date: 2019-08-14 4:06 PM + * @return: java.util.List> */ List> queryResourcesListWithSelected(Long rid); /** - * 获取资源的url和permission - * - * @return + * @description: 获取资源的url和Permission + * @param: + * @date: 2019-08-14 4:07 PM + * @return: java.util.List */ List listUrlAndPermission(); /** - * 获取所有可用的菜单资源 - * - * @return + * @description: 获取所有可用的菜单资源 + * @param: + * @date: 2019-08-14 4:07 PM + * @return: java.util.List */ List listAllAvailableMenu(); /** - * 获取父级资源下所有menu资源 - * - * @return + * @description: (never used)获取父级资源下所有menu资源 + * @param: pid + * @date: 2019-08-14 4:08 PM + * @return: java.util.List> */ List> listChildMenuByPid(Long pid); /** - * 获取用户关联的所有资源 - * - * @param userId - * @return + * @description: 通过用户id获取用户关联的所有资源 + * @param: userId + * @date: 2019-08-14 4:08 PM + * @return: java.util.List */ List listByUserId(Long userId); } diff --git a/shiro-core/src/main/java/com/zyd/shiro/business/service/SysRoleResourcesService.java b/shiro-core/src/main/java/com/zyd/shiro/business/service/SysRoleResourcesService.java index 91f473b..68df668 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/business/service/SysRoleResourcesService.java +++ b/shiro-core/src/main/java/com/zyd/shiro/business/service/SysRoleResourcesService.java @@ -24,28 +24,28 @@ import com.zyd.shiro.framework.object.AbstractService; /** - * 角色资源 - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 1.0 - * @website https://www.zhyd.me - * @date 2018/4/16 16:26 - * @since 1.0 + * @project: springboot-shiro + * @description: 角色资源相关的业务处理 + * @date: 2019-08-14 4:01 PM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ public interface SysRoleResourcesService extends AbstractService { /** - * 添加角色资源 - * - * @param roleId - * @param resourcesIds + * @description: 添加角色资源 + * @param: roleId + * @param: resourcesIds + * @date: 2019-08-14 4:13 PM + * @return: void */ void addRoleResources(Long roleId, String resourcesIds); /** - * 通过角色id批量删除 - * - * @param roleId + * @description: 通过角色id批量删除 + * @param: roleId + * @date: 2019-08-14 4:13 PM + * @return: void */ void removeByRoleId(Long roleId); } diff --git a/shiro-core/src/main/java/com/zyd/shiro/business/service/SysRoleService.java b/shiro-core/src/main/java/com/zyd/shiro/business/service/SysRoleService.java index de1a759..60387a9 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/business/service/SysRoleService.java +++ b/shiro-core/src/main/java/com/zyd/shiro/business/service/SysRoleService.java @@ -29,37 +29,35 @@ import java.util.Map; /** - * 角色 - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 1.0 - * @website https://www.zhyd.me - * @date 2018/4/16 16:26 - * @since 1.0 + * @project: springboot-shiro + * @description: 角色相关的业务处理 + * @date: 2019-08-14 4:01 PM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ public interface SysRoleService extends AbstractService { /** - * 获取ztree使用的角色列表 - * - * @param uid - * @return + * @description: 通过用户id获取ztree使用的角色列表 + * @param: uid + * @date: 2019-08-14 4:02 PM + * @return: java.util.List> */ List> queryRoleListWithSelected(Integer uid); /** - * 分页查询 - * - * @param vo - * @return + * @description: 分页查询角色列表 + * @param: vo + * @date: 2019-08-14 4:02 PM + * @return: com.github.pagehelper.PageInfo */ PageInfo findPageBreakByCondition(RoleConditionVO vo); /** - * 获取用户的角色 - * - * @param userId - * @return + * @description: 通过用户id获取用户所拥有的角色信息 + * @param: userId + * @date: 2019-08-14 4:03 PM + * @return: java.util.List */ List listRolesByUserId(Long userId); } diff --git a/shiro-core/src/main/java/com/zyd/shiro/business/service/SysUserRoleService.java b/shiro-core/src/main/java/com/zyd/shiro/business/service/SysUserRoleService.java index 5519ec8..20db7f6 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/business/service/SysUserRoleService.java +++ b/shiro-core/src/main/java/com/zyd/shiro/business/service/SysUserRoleService.java @@ -24,28 +24,28 @@ import com.zyd.shiro.framework.object.AbstractService; /** - * 用户角色 - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 1.0 - * @website https://www.zhyd.me - * @date 2018/4/16 16:26 - * @since 1.0 + * @project: springboot-shiro + * @description: 用户角色相关的业务处理 + * @date: 2019-08-14 4:10 PM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ public interface SysUserRoleService extends AbstractService { /** - * 添加用户角色 - * - * @param userId - * @param roleIds + * @description: 添加用户角色 + * @param: userId + * @param: roleIds + * @date: 2019-08-14 4:10 PM + * @return: void */ void addUserRole(Long userId, String roleIds); /** - * 根据用户ID删除用户角色 - * - * @param userId + * @description: 根据用户id删除用户角色 + * @param: userId + * @date: 2019-08-14 4:10 PM + * @return: void */ void removeByUserId(Long userId); } diff --git a/shiro-core/src/main/java/com/zyd/shiro/business/service/SysUserService.java b/shiro-core/src/main/java/com/zyd/shiro/business/service/SysUserService.java index 9933a1e..9bb3c55 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/business/service/SysUserService.java +++ b/shiro-core/src/main/java/com/zyd/shiro/business/service/SysUserService.java @@ -28,45 +28,43 @@ import java.util.List; /** - * 用户 - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 1.0 - * @website https://www.zhyd.me - * @date 2018/4/16 16:26 - * @since 1.0 + * @project: springboot-shiro + * @description: 用户相关的业务处理 + * @date: 2019-08-14 3:57 PM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ public interface SysUserService extends AbstractService { /** - * 分页查询 - * - * @param vo - * @return + * @description: 分页查询用户信息 + * @param: vo + * @date: 2019-08-14 3:58 PM + * @return: com.github.pagehelper.PageInfo */ PageInfo findPageBreakByCondition(UserConditionVO vo); /** - * 更新用户最后一次登录的状态信息 - * - * @param user - * @return + * @description: (never used)更新用户最后一次登录的状态信息 + * @param: user + * @date: 2019-08-14 3:59 PM + * @return: com.zyd.shiro.business.entity.User */ User updateUserLastLoginInfo(User user); /** - * 根据用户名查找 - * - * @param userName - * @return + * @description: 根据用户名查找指定的用户信息 + * @param: userName + * @date: 2019-08-14 4:00 PM + * @return: com.zyd.shiro.business.entity.User */ User getByUserName(String userName); /** - * 通过角色Id获取用户列表 - * - * @param roleId - * @return + * @description: 通过角色id获取用户列表 + * @param: roleId + * @date: 2019-08-14 4:00 PM + * @return: java.util.List */ List listByRoleId(Long roleId); From 078ca44ac91c18a06d3ebd6309eb448c6f438abc Mon Sep 17 00:00:00 2001 From: HuangYuhui Date: Wed, 14 Aug 2019 18:48:14 +0800 Subject: [PATCH 05/27] :art: style(pom.xml) : add the code comment --- pom.xml | 11 ++++++-- shiro-admin/pom.xml | 63 ++++++++++++++++++++++----------------------- shiro-core/pom.xml | 27 ++++++++++++------- 3 files changed, 57 insertions(+), 44 deletions(-) diff --git a/pom.xml b/pom.xml index 7fc9ede..b1f2449 100644 --- a/pom.xml +++ b/pom.xml @@ -8,18 +8,22 @@ 0.0.1-SNAPSHOT pom + shiro-core + shiro-admin shiro - Demo project for Spring Boot + A simpele authority management system + https://github.com/YUbuntu0109/springboot-shiro + org.springframework.boot spring-boot-starter-parent 2.0.1.RELEASE - + @@ -38,11 +42,13 @@ + org.projectlombok lombok true + org.springframework.boot spring-boot-starter-test @@ -55,4 +61,5 @@ test + diff --git a/shiro-admin/pom.xml b/shiro-admin/pom.xml index 4706cae..b8aa2a6 100644 --- a/shiro-admin/pom.xml +++ b/shiro-admin/pom.xml @@ -1,41 +1,40 @@ - 4.0.0 + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 - shiro-admin - 0.0.1-SNAPSHOT - jar + shiro-admin + 0.0.1-SNAPSHOT + jar - shiro-admin - Demo project for Spring Boot + shiro-admin + 后台管理模块 - - com.zyd.shiro - shiro - 0.0.1-SNAPSHOT - + + com.zyd.shiro + shiro + 0.0.1-SNAPSHOT + - - - com.zyd.shiro - shiro-core - 0.0.1-SNAPSHOT - - - - - - - org.springframework.boot - spring-boot-maven-plugin - - com.zyd.shiro.ShiroAdminApplication - JAR - - - - + + + com.zyd.shiro + shiro-core + 0.0.1-SNAPSHOT + + + + + + org.springframework.boot + spring-boot-maven-plugin + + com.zyd.shiro.ShiroAdminApplication + JAR + + + + diff --git a/shiro-core/pom.xml b/shiro-core/pom.xml index acd485e..062fc36 100644 --- a/shiro-core/pom.xml +++ b/shiro-core/pom.xml @@ -8,7 +8,7 @@ jar shiro-core - Demo project for Spring Boot + 核心业务类模块:提供基本的数据操作、工具处理等 com.zyd.shiro @@ -21,11 +21,12 @@ org.springframework.boot spring-boot-starter + org.springframework.boot spring-boot-starter-web - + org.springframework.boot spring-boot-starter-data-redis @@ -40,21 +41,23 @@ + redis.clients jedis + org.springframework.boot spring-boot-starter-freemarker - - + + org.springframework.boot spring-boot-starter-jdbc - + org.mybatis.spring.boot mybatis-spring-boot-starter @@ -66,7 +69,7 @@ - + tk.mybatis mapper-spring-boot-starter @@ -78,35 +81,38 @@ - + com.github.pagehelper pagehelper-spring-boot-starter ${pagehelper.version} - + mysql mysql-connector-java runtime - + + com.alibaba fastjson ${fastjson.version} - + com.alibaba druid-spring-boot-starter ${druid.version} + org.apache.shiro shiro-spring ${shiro.spring.version} + org.crazycake shiro-redis @@ -118,6 +124,7 @@ + net.mingsoft shiro-freemarker-tags From 9fe9fa836b8949d826ca3904e33991954f7f46d7 Mon Sep 17 00:00:00 2001 From: HuangYuhui Date: Wed, 14 Aug 2019 22:48:18 +0800 Subject: [PATCH 06/27] :lipstick: style : update the favicon.ico --- .../resources/static/assets/images/favicon.ico | Bin 0 -> 1470 bytes .../resources/static/assets/images/favicon.jpg | Bin 757 -> 0 bytes .../main/resources/templates/layout/header.ftl | 2 +- 3 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 shiro-admin/src/main/resources/static/assets/images/favicon.ico delete mode 100644 shiro-admin/src/main/resources/static/assets/images/favicon.jpg diff --git a/shiro-admin/src/main/resources/static/assets/images/favicon.ico b/shiro-admin/src/main/resources/static/assets/images/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..4ebbd63013aece9253b5253e697b9ed51d850333 GIT binary patch literal 1470 zcmb7^ZAep57{?#U%D&Y4U@!DGiYSW6z7>6FAoR6;il9)*YJ>02?|?HrGoT53g{=Q!uw1{N zmrzC}Wswx(Fo)%*ipmbiQ?^5i(g>Wo``{=){yda|7aIqCi_;eQO1wM{Bnl(<uEJ zz;#*${F%G!MvERD>9oF64EJe|yL+k*h)jL8M?*}#Rfk+gO`5K~6iPS^Bz(uc5oF2> z!S$q0F&K?TNwVewjuG0I{7uMZo|(ss1_;Wp0=fR+aE$r;*F2g385Dnr0WzdNH-li+lJZ2oLL zFX+I*co=I`=WUIT@7O2I24ZVgSg_7qoki#zh^0=J(6U8}0``dVOQd-&He^ z(`9$Ov@>Q$=_=B2d9R?oE${0$R2WT9x5oM*3z^AUVD1Rw-b1f=F7R1&_qfqNtRVj@J5N-s2l4X3Kqq#TE;e($3YmA8z{bIXsw1M`o?ef^FEna)Q#ploylt-xf=(fHPJi;p; zMcW2NkJ-f-?0m8JC6U8B1Lxs$7<9;+b+(c3Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!~g&e!~vBn4jTXf0*XmQK~y+TRa4Jv z6G0UIW|K8$H{BR)ls2eos$x_;Xi4=T_2Q-eIw-}0Hz{}$?7^FVfFR_(FXW@+mr@yl7~1c1;D=PqFj*)k|2_dO zwN?Yv&H+n9bOsVWhO7h%u{eQ5G(DzDZ4>CVaW(7U&G{VU^#U&LCx%NpGR4qwgusVJ z4QEm*d>I(T+oO5Ro;ZjL={TlN_G88M@OYu32~UgbKvc1U41yxEC~)cc<>6Lu77v!! zu~eyJ=ax8H^jAtPEMLiE`dbxa&sMo@gjuS>8=)eq^BM+DcR9##U1eBE+PHhT2kCAD zy_SvJpUZ&BMH!-j8NgNTA!EabJbnt3WQGUmvR6nxq@-u=Mn%p%S`U&KN+ z*!D=bMeM%_4EHyLz`fmlm?)L7%j&|VPxC;6JvRx7Mlg~~Xu`ETvs0I;BW&X$%$NnQ9&k8HCeNRG5Sx!e9ZP9os`{v-2vtBU&fCp3-d-j8Sp*s) n>4{#|UJX<#155`Juq6HfTa5D$@>E}i00000NkvXXu0mjf1Z-E) diff --git a/shiro-admin/src/main/resources/templates/layout/header.ftl b/shiro-admin/src/main/resources/templates/layout/header.ftl index 6d11afb..967f3cc 100644 --- a/shiro-admin/src/main/resources/templates/layout/header.ftl +++ b/shiro-admin/src/main/resources/templates/layout/header.ftl @@ -6,7 +6,7 @@ Shiro权限管理系统 - + From bc46df63d752ab2e4e09592931b4afa32e80ed80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E5=AE=87=E8=BE=89?= Date: Thu, 15 Aug 2019 08:23:11 +0800 Subject: [PATCH 07/27] :memo: docs : update the README.md --- README.md | 86 ++++++++++++++++++++++++------------------------------- 1 file changed, 37 insertions(+), 49 deletions(-) diff --git a/README.md b/README.md index ff8d0fa..2a07072 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,11 @@ -# springboot-shiro +## :closed_lock_with_key::busts_in_silhouette: 一个简洁优美的权限管理系统 -#### 项目介绍 -Springboot + shiro权限管理。这或许是流程最详细、代码最干净、配置最简单的shiro上手项目了。 +### 项目简洁 +*:sparkles: 如你所见 : 这或许是流程最清晰、代码最干净、注释最详细、配置最简单的Shiro项目啦 ! 非常具有参考与学习价值哟~* -#### 开发环境 +### 开发环境 -| 工具 | 版本或描述 | +| 工具 | 版本或描述 | | ----- | -------------------- | | OS | Windows 7 | | JDK | 1.7+ | @@ -13,20 +13,21 @@ Springboot + shiro权限管理。这或许是流程最详细、代码最干净 | Maven | 3.3.1 | | MySQL | 5.6.4 | -#### 模块划分 -| 模块 | 释义 | -| ---------- | ----------------------- | +### 项目模块划分 + +| 模块 | 释义 | +| ---------- | ------------------------------------------ | | shiro-core | 核心业务类模块,提供基本的数据操作、工具处理等 | -| shiro-admin | 后台管理模块 | +| shiro-admin | 后台管理模块 | -#### SQL Model +### 数据库模型 ![sql model](https://gitee.com/yadong.zhang/shiro/raw/master/docs/img/sql-model.png?v=1.0) -#### 使用说明 -1. 使用IDE导入本项目 +### 使用说明 +1. 使用`IDE`导入本项目 2. 新建数据库`CREATE DATABASE shiro;` 3. 导入数据库`docs/db/shiro.sql` 4. 修改(`resources/application.yml`)配置文件 @@ -38,59 +39,46 @@ Springboot + shiro权限管理。这或许是流程最详细、代码最干净 3. 直接运行`ShiroAdminApplication.java` 6. 浏览器访问`http://127.0.0.1:8080` -**用户密码** - -_超级管理员_: 账号:root 密码:123456 +#### 用户密码 +*超级管理员 : 账号:`root` , 密码:`123456`* -_普通管理员_: 账号:admin 密码:123456 +*普通管理员 : 账号:`admin` , 密码:`123456`* -**Druid监控** +#### Druid监控 +*链接 : `http://127.0.0.1:8080/druid/index.html`* -_链接_: `http://127.0.0.1:8080/druid/index.html` +*用户名: `zyd-druid` , 密码:`zyd-druid`* -用户名:zyd-druid 密码:zyd-druid +### 图片预览 +*:camera_flash: 系统首页* -#### 参与贡献 +![首页](https://gitee.com/yadong.zhang/shiro/raw/master/docs/img/index.png?v=1.0) -1. Fork 本项目 -2. 新建 Feat_xxx 分支 -3. 提交代码 -4. 新建 Pull Request +*:camera_flash: 资源管理页* -#### 参考资料 +![资源管理](https://gitee.com/yadong.zhang/shiro/raw/master/docs/img/root-resource.png?v=1.0) -1. 本项目部分代码参考自网络文章。[查看原文链接](http://blog.csdn.net/poorcoder_/article/details/71374002) -2. 前端模板来源自开源模板。[查看模板链接](https://colorlib.com/polygon/gentelella/index.html),[查看开源项目](https://github.com/puikinsh/gentelella) -3. 部分js实现参考自本人开源项目。[查看开源项目](https://gitee.com/yadong.zhang/DBlog) +*:camera_flash: 角色管理页* -感谢无私的网友,如果其他问题,欢迎各位朋友指正。 +![角色管理](https://gitee.com/yadong.zhang/shiro/raw/master/docs/img/root-role.png?v=1.0) -#### 图片预览 +*:camera_flash: 为角色分配资源* -![首页](https://gitee.com/yadong.zhang/shiro/raw/master/docs/img/index.png?v=1.0) -![资源管理](https://gitee.com/yadong.zhang/shiro/raw/master/docs/img/root-resource.png?v=1.0) -![角色管理](https://gitee.com/yadong.zhang/shiro/raw/master/docs/img/root-role.png?v=1.0) ![角色分配资源](https://gitee.com/yadong.zhang/shiro/raw/master/docs/img/root-role[root].png?v=1.0) -![用户管理](https://gitee.com/yadong.zhang/shiro/raw/master/docs/img/root-user.png?v=1.0) -![用户分配角色](https://gitee.com/yadong.zhang/shiro/raw/master/docs/img/root-user[role].png?v=1.0) -_注:以上图片是以`root`用户登录,`admin`用户的界面请参考`docs/img`下的图片_ +*:camera_flash: 用户管理页* -#### 生命不息,折腾不止! 更多信息,请关注: - 1. [我的博客](https://www.zhyd.me) - 2. [我的微博](http://weibo.com/211230415) - 3. [我的头条号](http://www.toutiao.com/c/user/3286958681/) - 4. [我的imooc](http://www.imooc.com/u/1175248/articles) - 4. [我的CSDN](https://blog.csdn.net/u011197448) +![用户管理](https://gitee.com/yadong.zhang/shiro/raw/master/docs/img/root-user.png?v=1.0) + +*:camera_flash: 为用户分配角色* -#### 有任何问题可以 -- [给我留言](https://www.zhyd.me/guestbook) +![用户分配角色](https://gitee.com/yadong.zhang/shiro/raw/master/docs/img/root-user[role].png?v=1.0) -| 微信(备注:加群) | 公众号 | -| :------------: | :------------: | -| | | +- *注 : 以上图片为`root`用户登录后的部分截屏,`admin`用户的界面请参考`docs/img`下的图片哟~* -#### 开源协议 - [MIT](https://gitee.com/yadong.zhang/DBlog/blob/master/LICENSE) +### 参考资料 +1. *本项目部分代码参考自网络文章 : [查看原文链接](http://blog.csdn.net/poorcoder_/article/details/71374002)* +2. *前端模板来源自开源模板 : [查看模板链接](https://colorlib.com/polygon/gentelella/index.html),[查看开源项目](https://github.com/puikinsh/gentelella)* +3. 部分js实现参考自本人开源项目 : [查看开源项目](https://gitee.com/yadong.zhang/DBlog) From 2ebc414e3ddc03d7274f41b01e0cb92c6c7d0644 Mon Sep 17 00:00:00 2001 From: HuangYuhui Date: Thu, 15 Aug 2019 09:33:16 +0800 Subject: [PATCH 08/27] :art: style(consts) : add the code comment --- .../shiro/business/consts/CommonConst.java | 24 +++++++------------ .../shiro/business/consts/SessionConst.java | 15 ++++++------ 2 files changed, 15 insertions(+), 24 deletions(-) diff --git a/shiro-core/src/main/java/com/zyd/shiro/business/consts/CommonConst.java b/shiro-core/src/main/java/com/zyd/shiro/business/consts/CommonConst.java index 9ab106d..652c69a 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/business/consts/CommonConst.java +++ b/shiro-core/src/main/java/com/zyd/shiro/business/consts/CommonConst.java @@ -20,28 +20,20 @@ package com.zyd.shiro.business.consts; /** - * 程序中公用的常量类 - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 1.0 - * @website https://www.zhyd.me - * @date 2018/4/16 16:26 - * @since 1.0 + * @project: springboot-shiro + * @description: 程序中公用的常量类 + * @date: 2019-08-15 9:22 AM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ public class CommonConst { - /** - * 安全密码(UUID生成),作为盐值用于用户密码的加密 - */ + // TODO: 8/15/2019 安全密码(由UUID生成),作为盐值用于用户密码的加密 public static final String ZYD_SECURITY_KEY = "929123f8f17944e8b0a531045453e1f1"; - /** - * 程序默认的错误状态码 - */ + // TODO: 8/15/2019 程序默认的错误状态码 public static final int DEFAULT_ERROR_CODE = 500; - /** - * 程序默认的成功状态码 - */ + // TODO: 8/15/2019 程序默认的成功状态码 public static final int DEFAULT_SUCCESS_CODE = 200; } diff --git a/shiro-core/src/main/java/com/zyd/shiro/business/consts/SessionConst.java b/shiro-core/src/main/java/com/zyd/shiro/business/consts/SessionConst.java index 92f0a4f..4ad7453 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/business/consts/SessionConst.java +++ b/shiro-core/src/main/java/com/zyd/shiro/business/consts/SessionConst.java @@ -20,15 +20,14 @@ package com.zyd.shiro.business.consts; /** - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @website https://www.zhyd.me - * @version 1.0 - * @date 2018/4/16 16:26 - * @since 1.0 + * @project: springboot-shiro + * @description: 程序中公用的Session常量类 + * @date: 2019-08-15 9:30 AM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ public class SessionConst { - /** - * User 的 session key;k - */ + + // TODO: 8/15/2019 User 的 session-key public static final String USER_SESSION_KEY = "user"; } From 786de380ec268a6dbb3a09a7b84b8c55a7cfa665 Mon Sep 17 00:00:00 2001 From: HuangYuhui Date: Thu, 15 Aug 2019 09:44:03 +0800 Subject: [PATCH 09/27] :art: style(entity) : add the code comment --- .../com/zyd/shiro/business/entity/Resources.java | 11 +++++------ .../java/com/zyd/shiro/business/entity/Role.java | 11 +++++------ .../zyd/shiro/business/entity/RoleResources.java | 10 +++++----- .../java/com/zyd/shiro/business/entity/User.java | 14 ++++++++------ .../com/zyd/shiro/business/entity/UserRole.java | 10 +++++----- 5 files changed, 28 insertions(+), 28 deletions(-) diff --git a/shiro-core/src/main/java/com/zyd/shiro/business/entity/Resources.java b/shiro-core/src/main/java/com/zyd/shiro/business/entity/Resources.java index 4561360..ae18118 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/business/entity/Resources.java +++ b/shiro-core/src/main/java/com/zyd/shiro/business/entity/Resources.java @@ -26,11 +26,11 @@ import java.util.List; /** - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @website https://www.zhyd.me - * @version 1.0 - * @date 2018/4/16 16:26 - * @since 1.0 + * @project: springboot-shiro + * @description: 资源信息 + * @date: 2019-08-15 9:36 AM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ public class Resources { private SysResources sysResources; @@ -161,4 +161,3 @@ public void setNodes(List nodes) { this.sysResources.setNodes(nodes); } } - diff --git a/shiro-core/src/main/java/com/zyd/shiro/business/entity/Role.java b/shiro-core/src/main/java/com/zyd/shiro/business/entity/Role.java index 6295b72..7dc5753 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/business/entity/Role.java +++ b/shiro-core/src/main/java/com/zyd/shiro/business/entity/Role.java @@ -24,11 +24,11 @@ import java.util.Date; /** - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @website https://www.zhyd.me - * @version 1.0 - * @date 2018/4/16 16:26 - * @since 1.0 + * @project: springboot-shiro + * @description: 角色信息 + * @date: 2019-08-15 9:36 AM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ public class Role { private SysRole sysRole; @@ -96,4 +96,3 @@ public void setUpdateTime(Date updateTime) { } } - diff --git a/shiro-core/src/main/java/com/zyd/shiro/business/entity/RoleResources.java b/shiro-core/src/main/java/com/zyd/shiro/business/entity/RoleResources.java index 3a2cd90..460d667 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/business/entity/RoleResources.java +++ b/shiro-core/src/main/java/com/zyd/shiro/business/entity/RoleResources.java @@ -24,11 +24,11 @@ import java.util.Date; /** - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @website https://www.zhyd.me - * @version 1.0 - * @date 2018/4/16 16:26 - * @since 1.0 + * @project: springboot-shiro + * @description: 连接角色与资源信息的桥梁 + * @date: 2019-08-15 9:41 AM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ public class RoleResources { diff --git a/shiro-core/src/main/java/com/zyd/shiro/business/entity/User.java b/shiro-core/src/main/java/com/zyd/shiro/business/entity/User.java index 9086f89..8ce0fa8 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/business/entity/User.java +++ b/shiro-core/src/main/java/com/zyd/shiro/business/entity/User.java @@ -19,7 +19,9 @@ */ package com.zyd.shiro.business.entity; -import com.zyd.shiro.business.enums.*; +import com.zyd.shiro.business.enums.UserGenderEnum; +import com.zyd.shiro.business.enums.UserStatusEnum; +import com.zyd.shiro.business.enums.UserTypeEnum; import com.zyd.shiro.framework.object.AbstractBO; import com.zyd.shiro.persistence.beans.SysUser; import com.zyd.shiro.util.PasswordUtil; @@ -28,11 +30,11 @@ import java.util.Date; /** - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @website https://www.zhyd.me - * @version 1.0 - * @date 2018/4/16 16:26 - * @since 1.0 + * @project: springboot-shiro + * @description: 用户信息 + * @date: 2019-08-15 9:34 AM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ public class User extends AbstractBO { private SysUser sysUser; diff --git a/shiro-core/src/main/java/com/zyd/shiro/business/entity/UserRole.java b/shiro-core/src/main/java/com/zyd/shiro/business/entity/UserRole.java index 42241fe..6376155 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/business/entity/UserRole.java +++ b/shiro-core/src/main/java/com/zyd/shiro/business/entity/UserRole.java @@ -24,11 +24,11 @@ import java.util.Date; /** - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @website https://www.zhyd.me - * @version 1.0 - * @date 2018/4/16 16:26 - * @since 1.0 + * @project: springboot-shiro + * @description: 连接用户与角色信息的桥梁 + * @date: 2019-08-15 9:40 AM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ public class UserRole { From 94fe6643d05c172b493dc3fa5d2f33586b922020 Mon Sep 17 00:00:00 2001 From: HuangYuhui Date: Thu, 15 Aug 2019 10:17:34 +0800 Subject: [PATCH 10/27] :art: style(enums) : add the code comment --- .../business/enums/ResourceTypeEnum.java | 21 +++++------ .../shiro/business/enums/ResponseStatus.java | 24 ++++++++----- .../shiro/business/enums/UserGenderEnum.java | 35 +++++++++++++------ .../shiro/business/enums/UserStatusEnum.java | 25 ++++++++----- .../shiro/business/enums/UserTypeEnum.java | 25 ++++++++----- 5 files changed, 82 insertions(+), 48 deletions(-) diff --git a/shiro-core/src/main/java/com/zyd/shiro/business/enums/ResourceTypeEnum.java b/shiro-core/src/main/java/com/zyd/shiro/business/enums/ResourceTypeEnum.java index e2c4058..c846a97 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/business/enums/ResourceTypeEnum.java +++ b/shiro-core/src/main/java/com/zyd/shiro/business/enums/ResourceTypeEnum.java @@ -1,18 +1,18 @@ /** * MIT License - * + *

* Copyright (c) 2018 yadong.zhang - * + *

* Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * + *

* The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. - * + *

* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -24,14 +24,15 @@ package com.zyd.shiro.business.enums; /** - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @website https://www.zhyd.me - * @version 1.0 - * @date 2018/4/16 16:26 - * @since 1.0 + * @project: springboot-shiro + * @description: 资源类型 + * @date: 2019-08-15 10:14 AM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ public enum ResourceTypeEnum { - menu("菜单"), button("按钮"); + menu("菜单"), + button("按钮"); private final String info; diff --git a/shiro-core/src/main/java/com/zyd/shiro/business/enums/ResponseStatus.java b/shiro-core/src/main/java/com/zyd/shiro/business/enums/ResponseStatus.java index f2b7817..f6437a5 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/business/enums/ResponseStatus.java +++ b/shiro-core/src/main/java/com/zyd/shiro/business/enums/ResponseStatus.java @@ -1,18 +1,18 @@ /** * MIT License - * + *

* Copyright (c) 2018 yadong.zhang - * + *

* Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * + *

* The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. - * + *

* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -24,11 +24,11 @@ package com.zyd.shiro.business.enums; /** - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @website https://www.zhyd.me - * @version 1.0 - * @date 2018/4/16 16:26 - * @since 1.0 + * @project: springboot-shiro + * @description: 错误操作的提示信息 + * @date: 2019-08-15 10:08 AM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ public enum ResponseStatus { @@ -52,6 +52,12 @@ public enum ResponseStatus { this.message = message; } + /** + * @description: 获取错误操作的响应状态 + * @param: message + * @date: 2019-08-15 10:11 AM + * @return: com.zyd.shiro.business.enums.ResponseStatus + */ public static ResponseStatus getResponseStatus(String message) { for (ResponseStatus ut : ResponseStatus.values()) { if (ut.getMessage() == message) { diff --git a/shiro-core/src/main/java/com/zyd/shiro/business/enums/UserGenderEnum.java b/shiro-core/src/main/java/com/zyd/shiro/business/enums/UserGenderEnum.java index f3c1b5f..83b9f53 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/business/enums/UserGenderEnum.java +++ b/shiro-core/src/main/java/com/zyd/shiro/business/enums/UserGenderEnum.java @@ -1,18 +1,18 @@ /** * MIT License - * + *

* Copyright (c) 2018 yadong.zhang - * + *

* Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * + *

* The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. - * + *

* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -24,11 +24,11 @@ package com.zyd.shiro.business.enums; /** - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @website https://www.zhyd.me - * @version 1.0 - * @date 2018/4/16 16:26 - * @since 1.0 + * @project: springboot-shiro + * @description: 用户性别信息 + * @date: 2019-08-15 10:05 AM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ public enum UserGenderEnum { MALE(1, "男"), FEMALE(0, "女"), UNKNOW(-1, ""); @@ -40,6 +40,12 @@ public enum UserGenderEnum { this.desc = desc; } + /** + * @description: (never used)通过code码获取用户的性别信息 + * @param: code + * @date: 2019-08-15 10:05 AM + * @return: com.zyd.shiro.business.enums.UserGenderEnum + */ public static UserGenderEnum getUserSex(Integer code) { if (code == null) { return UNKNOW; @@ -52,14 +58,20 @@ public static UserGenderEnum getUserSex(Integer code) { return UNKNOW; } + /** + * @description: (never used)通过字符code获取用户性别信息 + * @param: code + * @date: 2019-08-15 10:06 AM + * @return: com.zyd.shiro.business.enums.UserGenderEnum + */ public static UserGenderEnum getUserSex(String code) { if (code == null) { return UNKNOW; } - if("m".equals(code)){ + if ("m".equals(code)) { return MALE; } - if("f".equals(code)){ + if ("f".equals(code)) { return FEMALE; } return UNKNOW; @@ -69,6 +81,7 @@ public int getCode() { return code; } + //the method is never used public String getDesc() { return desc; } diff --git a/shiro-core/src/main/java/com/zyd/shiro/business/enums/UserStatusEnum.java b/shiro-core/src/main/java/com/zyd/shiro/business/enums/UserStatusEnum.java index ffb68af..243f938 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/business/enums/UserStatusEnum.java +++ b/shiro-core/src/main/java/com/zyd/shiro/business/enums/UserStatusEnum.java @@ -1,18 +1,18 @@ /** * MIT License - * + *

* Copyright (c) 2018 yadong.zhang - * + *

* Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * + *

* The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. - * + *

* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -24,11 +24,11 @@ package com.zyd.shiro.business.enums; /** - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @website https://www.zhyd.me - * @version 1.0 - * @date 2018/4/16 16:26 - * @since 1.0 + * @project: springboot-shiro + * @description: 用户状态信息 + * @date: 2019-08-15 9:56 AM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ public enum UserStatusEnum { NORMAL(1, "正常"), @@ -41,6 +41,12 @@ public enum UserStatusEnum { this.desc = desc; } + /** + * @description: 获取用户的状态(是否可使用) + * @param: code + * @date: 2019-08-15 10:00 AM + * @return: com.zyd.shiro.business.enums.UserStatusEnum + */ public static UserStatusEnum get(Integer code) { if (null == code) { return NORMAL; @@ -58,6 +64,7 @@ public Integer getCode() { return code; } + //the method is never used public String getDesc() { return desc; } diff --git a/shiro-core/src/main/java/com/zyd/shiro/business/enums/UserTypeEnum.java b/shiro-core/src/main/java/com/zyd/shiro/business/enums/UserTypeEnum.java index a8faab2..86697b7 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/business/enums/UserTypeEnum.java +++ b/shiro-core/src/main/java/com/zyd/shiro/business/enums/UserTypeEnum.java @@ -1,18 +1,18 @@ /** * MIT License - * + *

* Copyright (c) 2018 yadong.zhang - * + *

* Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * + *

* The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. - * + *

* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -26,11 +26,11 @@ import org.springframework.util.StringUtils; /** - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @website https://www.zhyd.me - * @version 1.0 - * @date 2018/4/16 16:26 - * @since 1.0 + * @project: springboot-shiro + * @description: 用户的身份类型信息 + * @date: 2019-08-15 9:51 AM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ public enum UserTypeEnum { ROOT("超级管理员"), @@ -43,6 +43,12 @@ public enum UserTypeEnum { this.desc = desc; } + /** + * @description: 获取用户的身份类型 + * @param: type + * @date: 2019-08-15 9:55 AM + * @return: com.zyd.shiro.business.enums.UserTypeEnum + */ public static UserTypeEnum getByType(String type) { if (StringUtils.isEmpty(type)) { return UserTypeEnum.UNKNOW; @@ -55,6 +61,7 @@ public static UserTypeEnum getByType(String type) { return UserTypeEnum.UNKNOW; } + //the method is never used public String getDesc() { return desc; } From 5ccb2c544eb38da108da9391d34999fc88252e21 Mon Sep 17 00:00:00 2001 From: HuangYuhui Date: Thu, 15 Aug 2019 10:29:27 +0800 Subject: [PATCH 11/27] :art: style(vo) : add the code comment --- .../shiro/business/vo/ResourceConditionVO.java | 13 +++++-------- .../zyd/shiro/business/vo/RoleConditionVO.java | 12 +++++------- .../zyd/shiro/business/vo/UserConditionVO.java | 11 +++++------ .../framework/object/BaseConditionVO.java | 18 +++++++++--------- 4 files changed, 24 insertions(+), 30 deletions(-) diff --git a/shiro-core/src/main/java/com/zyd/shiro/business/vo/ResourceConditionVO.java b/shiro-core/src/main/java/com/zyd/shiro/business/vo/ResourceConditionVO.java index 32a9e34..4481e1b 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/business/vo/ResourceConditionVO.java +++ b/shiro-core/src/main/java/com/zyd/shiro/business/vo/ResourceConditionVO.java @@ -19,22 +19,19 @@ */ package com.zyd.shiro.business.vo; -import com.zyd.shiro.business.entity.Resources; import com.zyd.shiro.framework.object.BaseConditionVO; import lombok.Data; import lombok.EqualsAndHashCode; /** - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 1.0 - * @website https://www.zhyd.me - * @date 2018/4/16 16:26 - * @since 1.0 + * @project: springboot-shiro + * @description: 资源信息 + * @date: 2019-08-15 10:26 AM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ @Data @EqualsAndHashCode(callSuper = false) public class ResourceConditionVO extends BaseConditionVO { private String type; } - diff --git a/shiro-core/src/main/java/com/zyd/shiro/business/vo/RoleConditionVO.java b/shiro-core/src/main/java/com/zyd/shiro/business/vo/RoleConditionVO.java index 5f73865..9163148 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/business/vo/RoleConditionVO.java +++ b/shiro-core/src/main/java/com/zyd/shiro/business/vo/RoleConditionVO.java @@ -25,16 +25,14 @@ import lombok.EqualsAndHashCode; /** - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 1.0 - * @website https://www.zhyd.me - * @date 2018/4/16 16:26 - * @since 1.0 + * @project: springboot-shiro + * @description: 角色信息 + * @date: 2019-08-15 10:26 AM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ @Data @EqualsAndHashCode(callSuper = false) public class RoleConditionVO extends BaseConditionVO { private Role role; } - diff --git a/shiro-core/src/main/java/com/zyd/shiro/business/vo/UserConditionVO.java b/shiro-core/src/main/java/com/zyd/shiro/business/vo/UserConditionVO.java index ed9da8e..2dffc99 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/business/vo/UserConditionVO.java +++ b/shiro-core/src/main/java/com/zyd/shiro/business/vo/UserConditionVO.java @@ -25,12 +25,11 @@ import lombok.EqualsAndHashCode; /** - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 1.0 - * @website https://www.zhyd.me - * @date 2018/4/16 16:26 - * @since 1.0 + * @project: springboot-shiro + * @description: 用户信息 + * @date: 2019-08-15 10:20 AM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ @Data @EqualsAndHashCode(callSuper = false) diff --git a/shiro-core/src/main/java/com/zyd/shiro/framework/object/BaseConditionVO.java b/shiro-core/src/main/java/com/zyd/shiro/framework/object/BaseConditionVO.java index f797155..c7504b8 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/framework/object/BaseConditionVO.java +++ b/shiro-core/src/main/java/com/zyd/shiro/framework/object/BaseConditionVO.java @@ -1,18 +1,18 @@ /** * MIT License - * + *

* Copyright (c) 2018 yadong.zhang - * + *

* Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * + *

* The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. - * + *

* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -30,11 +30,11 @@ import java.util.Date; /** - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @website https://www.zhyd.me - * @version 1.0 - * @date 2018/4/16 16:26 - * @since 1.0 + * @project: springboot-shiro + * @description: 基础信息 + * @date: 2019-08-15 10:27 AM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ @Data @EqualsAndHashCode(callSuper = false) From a3c925a7d1ba64fb6480a11c33d30e2593881d84 Mon Sep 17 00:00:00 2001 From: HuangYuhui Date: Thu, 15 Aug 2019 11:14:38 +0800 Subject: [PATCH 12/27] :art: style(util) : add the code comment --- .../main/java/com/zyd/shiro/util/AesUtil.java | 66 ++++++++----------- .../main/java/com/zyd/shiro/util/IpUtil.java | 28 ++++---- .../main/java/com/zyd/shiro/util/Md5Util.java | 30 ++++----- .../java/com/zyd/shiro/util/ResultUtil.java | 13 ++-- .../java/com/zyd/shiro/util/SessionUtil.java | 53 +++++++++------ 5 files changed, 93 insertions(+), 97 deletions(-) diff --git a/shiro-core/src/main/java/com/zyd/shiro/util/AesUtil.java b/shiro-core/src/main/java/com/zyd/shiro/util/AesUtil.java index 84d6297..c9a3143 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/util/AesUtil.java +++ b/shiro-core/src/main/java/com/zyd/shiro/util/AesUtil.java @@ -29,83 +29,71 @@ import java.security.SecureRandom; /** - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @website https://www.zhyd.me - * @version 1.0 - * @date 2018/4/16 16:26 - * @since 1.0 + * @project: springboot-shiro + * @description: 加密工具类:AES(Advanced Encryption Standard),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准 + * @date: 2019-08-15 10:35 AM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ public class AesUtil { private static final String KEY_ALGORITHM = "AES"; private static final String DEFAULT_CIPHER_ALGORITHM = "AES/ECB/PKCS5Padding"; /** - * AES加密 - * - * @param passwd - * 加密的密钥 - * @param content - * 需要加密的字符串 - * @return 返回Base64转码后的加密数据 - * @throws Exception + * @description: AES加密 + * @param: passwd 加密的密钥 + * @param: content 需要加密的字符串 + * @date: 2019-08-15 10:40 AM + * @return: java.lang.String 返回Base64转码后的加密数据 */ public static String encrypt(String passwd, String content) throws Exception { // 创建密码器 Cipher cipher = Cipher.getInstance(DEFAULT_CIPHER_ALGORITHM); - + // 指定待加密字符的编码格式 byte[] byteContent = content.getBytes("utf-8"); - // 初始化为加密模式的密码器 cipher.init(Cipher.ENCRYPT_MODE, getSecretKey(passwd)); - // 加密 byte[] result = cipher.doFinal(byteContent); - //通过Base64转码返回 return Base64.encodeBase64String(result); } /** - * AES解密 - * - * @param passwd - * 加密的密钥 - * @param encrypted - * 已加密的密文 - * @return 返回解密后的数据 - * @throws Exception + * @description: AES解密 + * @param: passwd 加密的密钥 + * @param: encrypted 已加密的密文 + * @date: 2019-08-15 10:44 AM + * @return: java.lang.String 返回解密后的数据 */ public static String decrypt(String passwd, String encrypted) throws Exception { //实例化 Cipher cipher = Cipher.getInstance(DEFAULT_CIPHER_ALGORITHM); - - //使用密钥初始化,设置为解密模式 + //使用密钥初始化,设置为解密模式 cipher.init(Cipher.DECRYPT_MODE, getSecretKey(passwd)); - - //执行操作 + //解密 byte[] result = cipher.doFinal(Base64.decodeBase64(encrypted)); - + //返回解密后的数据 return new String(result, "utf-8"); } /** - * 生成加密秘钥 - * - * @return + * @description: 生成加密秘钥 + * @param: password + * @date: 2019-08-15 10:46 AM + * @return: javax.crypto.spec.SecretKeySpec */ private static SecretKeySpec getSecretKey(final String password) throws NoSuchAlgorithmException { - //返回生成指定算法密钥生成器的 KeyGenerator 对象 + // 获取生成指定算法密钥生成器的 KeyGenerator 对象 KeyGenerator kg = KeyGenerator.getInstance(KEY_ALGORITHM); - // javax.crypto.BadPaddingException: Given final block not properly padded解决方案 + // 异常:javax.crypto.BadPaddingException: Given final block not properly padded的解决方案如下 // https://www.cnblogs.com/zempty/p/4318902.html - 用此法解决的 // https://www.cnblogs.com/digdeep/p/5580244.html - 留作参考吧 SecureRandom random = SecureRandom.getInstance("SHA1PRNG"); random.setSeed(password.getBytes()); - //AES 要求密钥长度为 128 + // AES要求密钥长度为128 kg.init(128, random); - - //生成一个密钥 + // 生成一个密钥 SecretKey secretKey = kg.generateKey(); // 转换为AES专用密钥 return new SecretKeySpec(secretKey.getEncoded(), KEY_ALGORITHM); diff --git a/shiro-core/src/main/java/com/zyd/shiro/util/IpUtil.java b/shiro-core/src/main/java/com/zyd/shiro/util/IpUtil.java index 7c9ed6b..ba61382 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/util/IpUtil.java +++ b/shiro-core/src/main/java/com/zyd/shiro/util/IpUtil.java @@ -24,21 +24,19 @@ import javax.servlet.http.HttpServletRequest; /** - * 获取IP的工具类 - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 1.0 - * @website https://www.zhyd.me - * @date 2018/4/18 11:48 - * @since 1.0 + * @project: springboot-shiro + * @description: 获取IP的工具类 + * @date: 2019-08-15 10:55 AM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ public class IpUtil { /** - * 获取真实IP - * - * @param request - * @return + * @description: 获取真实的IP地址 + * @param: request + * @date: 2019-08-15 10:52 AM + * @return: java.lang.String */ public static String getRealIp(HttpServletRequest request) { String ip = request.getHeader("x-forwarded-for"); @@ -49,10 +47,10 @@ public static String getRealIp(HttpServletRequest request) { } /** - * 校验IP - * - * @param ip - * @return + * @description: 校验IP地址 + * @param: ip + * @date: 2019-08-15 10:53 AM + * @return: boolean */ private static boolean checkIp(String ip) { return !StringUtils.isEmpty(ip) && !"unknown".equalsIgnoreCase(ip); diff --git a/shiro-core/src/main/java/com/zyd/shiro/util/Md5Util.java b/shiro-core/src/main/java/com/zyd/shiro/util/Md5Util.java index 6e06bd5..09154a5 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/util/Md5Util.java +++ b/shiro-core/src/main/java/com/zyd/shiro/util/Md5Util.java @@ -24,33 +24,31 @@ import java.security.MessageDigest; /** - * MD5加密工具类 - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 1.0 - * @website https://www.zhyd.me - * @date 2018/4/18 11:48 - * @since 1.0 + * @project: springboot-shiro + * @description: MD5加密工具类 + * @date: 2019-08-15 10:55 AM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ @Slf4j public class Md5Util { /** - * 通过盐值对字符串进行MD5加密 - * - * @param param 需要加密的字符串 - * @param salt 盐值 - * @return + * @description: (never used)通过盐值对字符串进行MD5加密 + * @param: param 需要加密的字符串 + * @param: salt 盐值 + * @date: 2019-08-15 10:56 AM + * @return: java.lang.String */ public static String MD5(String param, String salt) { return MD5(param + salt); } /** - * 加密字符串 - * - * @param s 字符串 - * @return + * @description: 加密字符串 + * @param: s + * @date: 2019-08-15 10:57 AM + * @return: java.lang.String */ public static String MD5(String s) { char[] hexDigits = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}; diff --git a/shiro-core/src/main/java/com/zyd/shiro/util/ResultUtil.java b/shiro-core/src/main/java/com/zyd/shiro/util/ResultUtil.java index 2145b5c..cebb166 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/util/ResultUtil.java +++ b/shiro-core/src/main/java/com/zyd/shiro/util/ResultUtil.java @@ -31,13 +31,11 @@ import java.util.Map; /** - * 接口返回工具类,支持ModelAndView、ResponseVO、PageResult - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 1.0 - * @website https://www.zhyd.me - * @date 2018/4/18 11:48 - * @since 1.0 + * @project: springboot-shiro + * @description: 接口返回工具类:支持ModelAndView、ResponseVO、PageResult + * @date: 2019-08-15 10:59 AM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ public class ResultUtil { @@ -45,6 +43,7 @@ public static ModelAndView view(String view) { return new ModelAndView(view); } + //the method is not used public static ModelAndView view(String view, Map model) { return new ModelAndView(view, model); } diff --git a/shiro-core/src/main/java/com/zyd/shiro/util/SessionUtil.java b/shiro-core/src/main/java/com/zyd/shiro/util/SessionUtil.java index d33116c..987bfae 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/util/SessionUtil.java +++ b/shiro-core/src/main/java/com/zyd/shiro/util/SessionUtil.java @@ -26,66 +26,79 @@ import java.util.UUID; /** - * Session工具类 - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 1.0 - * @website https://www.zhyd.me - * @date 2018/4/18 11:48 - * @since 1.0 + * @project: springboot-shiro + * @description: Session工具类 + * @date: 2019-08-15 11:04 AM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ public class SessionUtil { /** - * 获取session中的用户信息 - * - * @return User + * @description: 获取session中的用户信息 + * @param: + * @date: 2019-08-15 11:04 AM + * @return: com.zyd.shiro.business.entity.User */ public static User getUser() { return (User) RequestHolder.getSession(SessionConst.USER_SESSION_KEY); } /** - * 添加session - * - * @param user + * @description: 将用户信息添加到session + * @param: user + * @date: 2019-08-15 11:05 AM + * @return: void */ public static void setUser(User user) { RequestHolder.setSession(SessionConst.USER_SESSION_KEY, user); } /** - * 删除session信息 + * @description: 删除session中的用户信息 + * @param: + * @date: 2019-08-15 11:05 AM + * @return: void */ public static void removeUser() { RequestHolder.removeSession(SessionConst.USER_SESSION_KEY); } /** - * 获取session中的Token信息 - * - * @return String + * @description: 获取session中的Token信息 + * @param: key + * @date: 2019-08-15 11:09 AM + * @return: java.lang.String */ public static String getToken(String key) { return (String) RequestHolder.getSession(key); } /** - * 添加Token + * @description: 将Token信息添加到session + * @param: key + * @date: 2019-08-15 11:09 AM + * @return: void */ public static void setToken(String key) { RequestHolder.setSession(key, UUID.randomUUID().toString()); } /** - * 删除Token信息 + * @description: 删除session中的Token信息 + * @param: key + * @date: 2019-08-15 11:10 AM + * @return: void */ public static void removeToken(String key) { RequestHolder.removeSession(key); } /** - * 删除所有的session信息 + * @description: 删除所有的session信息 + * @param: + * @date: 2019-08-15 11:11 AM + * @return: void */ public static void removeAllSession() { String[] keys = RequestHolder.getSessionKeys(); From 10c8255a9c8e51b53a545306fd500bfb5ace427c Mon Sep 17 00:00:00 2001 From: HuangYuhui Date: Thu, 15 Aug 2019 11:38:12 +0800 Subject: [PATCH 13/27] :art: style(property) : add the code comment --- .../framework/property/DruidProperties.java | 12 +++++------ .../framework/property/RedisProperties.java | 20 +++++++++---------- 2 files changed, 14 insertions(+), 18 deletions(-) diff --git a/shiro-core/src/main/java/com/zyd/shiro/framework/property/DruidProperties.java b/shiro-core/src/main/java/com/zyd/shiro/framework/property/DruidProperties.java index c78c6c4..cd92787 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/framework/property/DruidProperties.java +++ b/shiro-core/src/main/java/com/zyd/shiro/framework/property/DruidProperties.java @@ -28,13 +28,11 @@ import java.util.List; /** - * druid属性 - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 1.0 - * @website https://www.zhyd.me - * @date 2018/5/17 11:13 - * @since 1.0 + * @project: springboot-shiro + * @description: druid属性信息 + * @date: 2019-08-15 11:35 AM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ @Configuration @ConfigurationProperties(prefix = "zyd.druid") diff --git a/shiro-core/src/main/java/com/zyd/shiro/framework/property/RedisProperties.java b/shiro-core/src/main/java/com/zyd/shiro/framework/property/RedisProperties.java index d6fe8f0..a6f407e 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/framework/property/RedisProperties.java +++ b/shiro-core/src/main/java/com/zyd/shiro/framework/property/RedisProperties.java @@ -1,18 +1,18 @@ /** * MIT License - * + *

* Copyright (c) 2018 yadong.zhang - * + *

* Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * + *

* The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. - * + *

* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -30,13 +30,11 @@ import org.springframework.core.annotation.Order; /** - * redis属性配置文件 - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 1.0 - * @website https://www.zhyd.me - * @date 2018/4/16 16:26 - * @since 1.0 + * @project: springboot-shiro + * @description: redis属性信息 + * @date: 2019-08-15 11:37 AM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ @Configuration @ConfigurationProperties(prefix = "spring.redis") From a3a29974d6550f2e32c530269dded776871fdcb7 Mon Sep 17 00:00:00 2001 From: HuangYuhui Date: Thu, 15 Aug 2019 13:33:47 +0800 Subject: [PATCH 14/27] :art: style(config) : add the code comment --- .../shiro/framework/config/DruidConfig.java | 40 ++--- .../framework/config/ErrorPagesConfig.java | 19 +- .../framework/config/FreeMarkerConfig.java | 16 +- .../shiro/framework/config/MybatisConfig.java | 19 +- .../shiro/framework/config/RedisConfig.java | 19 +- .../shiro/framework/config/ShiroConfig.java | 168 +++++++++++------- .../shiro/framework/config/WebMvcConfig.java | 10 +- 7 files changed, 163 insertions(+), 128 deletions(-) diff --git a/shiro-core/src/main/java/com/zyd/shiro/framework/config/DruidConfig.java b/shiro-core/src/main/java/com/zyd/shiro/framework/config/DruidConfig.java index 1bc65ad..1cb96c1 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/framework/config/DruidConfig.java +++ b/shiro-core/src/main/java/com/zyd/shiro/framework/config/DruidConfig.java @@ -1,18 +1,18 @@ /** * MIT License - * + *

* Copyright (c) 2018 yadong.zhang - * + *

* Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * + *

* The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. - * + *

* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -37,13 +37,11 @@ import java.util.List; /** - * Druid Monitor 配置 - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 1.0 - * @website https://www.zhyd.me - * @date 2017/9/16 16:26 - * @since 1.0 + * @project: springboot-shiro + * @description: Druid Monitor的配置信息 + * @date: 2019-08-15 11:38 AM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ @Configuration public class DruidConfig { @@ -55,29 +53,29 @@ public class DruidConfig { public ServletRegistrationBean druidStatViewServlet() { ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), druidProperties.getServletPath()); - // IP黑名单 (存在共同时,deny优先于allow) : 如果满足deny的话提示:Sorry, you are not permitted to view this page. + // IP黑名单(存在共同时,deny优先于allow) : 如果满足deny的话提示:Sorry,you are not permitted to view this page. List denyIps = druidProperties.getDenyIps(); - if(!CollectionUtils.isEmpty(denyIps)){ + if (!CollectionUtils.isEmpty(denyIps)) { bean.addInitParameter("deny", StringUtils.collectionToDelimitedString(denyIps, ",")); } - // IP白名单 List allowIps = druidProperties.getAllowIps(); - if(!CollectionUtils.isEmpty(allowIps)){ + if (!CollectionUtils.isEmpty(allowIps)) { bean.addInitParameter("allow", StringUtils.collectionToDelimitedString(allowIps, ",")); } - - // 登录查看信息的账号密码. + // 登录查看信息的账号密码 bean.addInitParameter("loginUsername", druidProperties.getUsername()); bean.addInitParameter("loginPassword", druidProperties.getPassword()); - // 禁用HTML页面上的"Reset All"功能(默认false) + // 禁用HTML页面上的"Reset All"功能(默认false) bean.addInitParameter("resetEnable", String.valueOf(druidProperties.getResetEnable())); return bean; } /** - * Druid的StatFilter - * @return + * @description: 配置Druid的StatFilter + * @param: + * @date: 2019-08-15 11:39 AM + * @return: org.springframework.boot.web.servlet.FilterRegistrationBean */ @Bean public FilterRegistrationBean druidStatFilter() { @@ -85,7 +83,7 @@ public FilterRegistrationBean druidStatFilter() { // 添加过滤规则 bean.addUrlPatterns("/*"); // 排除的url - bean.addInitParameter("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"); + bean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"); return bean; } } diff --git a/shiro-core/src/main/java/com/zyd/shiro/framework/config/ErrorPagesConfig.java b/shiro-core/src/main/java/com/zyd/shiro/framework/config/ErrorPagesConfig.java index cdbb4df..943a46d 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/framework/config/ErrorPagesConfig.java +++ b/shiro-core/src/main/java/com/zyd/shiro/framework/config/ErrorPagesConfig.java @@ -31,21 +31,20 @@ import org.springframework.stereotype.Component; /** - * 自定义的异常页面配置 - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 1.0 - * @website https://www.zhyd.me - * @date 2018/4/16 16:26 - * @since 1.0 + * @project: springboot-shiro + * @description: 自定义异常页的配置类 + * @date: 2019-08-15 11:40 AM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ @Component public class ErrorPagesConfig { /** - * 自定义异常处理路径 - * - * @return + * @description: 自定义异常处理路径 + * @param: + * @date: 2019-08-15 11:40 AM + * @return: org.springframework.boot.web.server.WebServerFactoryCustomizer */ @Bean public WebServerFactoryCustomizer containerCustomizer() { diff --git a/shiro-core/src/main/java/com/zyd/shiro/framework/config/FreeMarkerConfig.java b/shiro-core/src/main/java/com/zyd/shiro/framework/config/FreeMarkerConfig.java index c982544..7326605 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/framework/config/FreeMarkerConfig.java +++ b/shiro-core/src/main/java/com/zyd/shiro/framework/config/FreeMarkerConfig.java @@ -28,12 +28,11 @@ import javax.annotation.PostConstruct; /** - * freemarker配置类 - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 1.0 - * @website https://www.zhyd.me - * @date 2018/4/16 16:26 - * @since 1.0 + * @project: springboot-shiro + * @description: FreeMarker配置类 + * @date: 2019-08-15 11:42 AM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ @Configuration public class FreeMarkerConfig { @@ -44,7 +43,10 @@ public class FreeMarkerConfig { protected CustomTagDirective customTagDirective; /** - * 添加自定义标签 + * @description: 添加自定义标签 + * @param: + * @date: 2019-08-15 11:42 AM + * @return: void */ @PostConstruct public void setSharedVariable() { diff --git a/shiro-core/src/main/java/com/zyd/shiro/framework/config/MybatisConfig.java b/shiro-core/src/main/java/com/zyd/shiro/framework/config/MybatisConfig.java index 18fcac7..efda77e 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/framework/config/MybatisConfig.java +++ b/shiro-core/src/main/java/com/zyd/shiro/framework/config/MybatisConfig.java @@ -1,18 +1,18 @@ /** * MIT License - * + *

* Copyright (c) 2018 yadong.zhang - * + *

* Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * + *

* The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. - * + *

* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -27,12 +27,11 @@ import org.springframework.stereotype.Component; /** - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 1.0 - * @website https://www.zhyd.me - * @date 2018/4/16 16:26 - * @since 1.0 + * @project: springboot-shiro + * @description: MyBatis配置类 + * @date: 2019-08-15 11:42 AM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ @Component @MapperScan("com.zyd.shiro.persistence.mapper") diff --git a/shiro-core/src/main/java/com/zyd/shiro/framework/config/RedisConfig.java b/shiro-core/src/main/java/com/zyd/shiro/framework/config/RedisConfig.java index 12255f7..0810668 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/framework/config/RedisConfig.java +++ b/shiro-core/src/main/java/com/zyd/shiro/framework/config/RedisConfig.java @@ -43,20 +43,21 @@ /** - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 1.0 - * @website https://www.zhyd.me - * @date 2018/4/16 16:26 - * @since 1.0 + * @project: springboot-shiro + * @description: Redis配置类 + * @date: 2019-08-15 11:42 AM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ @Configuration @EnableCaching public class RedisConfig extends CachingConfigurerSupport { /** - * 缓存数据时Key的生成器,可以依据业务和技术场景自行定制 - * - * @return + * @description: 缓存数据时Key的生成器, 可依据业务和技术场景自行定制 + * @param: + * @date: 2019-08-15 11:44 AM + * @return: org.springframework.cache.interceptor.KeyGenerator */ @Bean @Override @@ -77,7 +78,7 @@ public KeyGenerator keyGenerator() { @Bean public CacheManager cacheManager(RedisConnectionFactory factory) { return RedisCacheManager.builder(RedisCacheWriter.nonLockingRedisCacheWriter(factory)) - // 默认缓存过期时间:天 + // 默认缓存过期时间:30天 .cacheDefaults(RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofDays(30))) .transactionAware() .build(); diff --git a/shiro-core/src/main/java/com/zyd/shiro/framework/config/ShiroConfig.java b/shiro-core/src/main/java/com/zyd/shiro/framework/config/ShiroConfig.java index 894ff2f..75c487f 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/framework/config/ShiroConfig.java +++ b/shiro-core/src/main/java/com/zyd/shiro/framework/config/ShiroConfig.java @@ -48,13 +48,11 @@ import java.util.Map; /** - * Shiro配置类 - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 1.0 - * @website https://www.zhyd.me - * @date 2018/4/24 14:37 - * @since 1.0 + * @project: springboot-shiro + * @description: Shiro配置类 + * @date: 2019-08-15 11:42 AM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ @Configuration @Order(-1) @@ -65,38 +63,54 @@ public class ShiroConfig { @Autowired private RedisProperties redisProperties; + /** + * @description: 将Shiro安全管理器注入到Bean的实例 + * @param: securityManager + * @date: 2019-08-15 11:48 AM + * @return: org.springframework.beans.factory.config.MethodInvokingFactoryBean + */ @Bean - public MethodInvokingFactoryBean methodInvokingFactoryBean(SecurityManager securityManager){ + public MethodInvokingFactoryBean methodInvokingFactoryBean(SecurityManager securityManager) { MethodInvokingFactoryBean bean = new MethodInvokingFactoryBean(); bean.setStaticMethod("org.apache.shiro.SecurityUtils.setSecurityManager"); bean.setArguments(securityManager); return bean; } + /** + * @description: 生命周期处理器 + * @param: + * @date: 2019-08-15 11:48 AM + * @return: org.apache.shiro.spring.LifecycleBeanPostProcessor + */ @Bean(name = "lifecycleBeanPostProcessor") public static LifecycleBeanPostProcessor getLifecycleBeanPostProcessor() { return new LifecycleBeanPostProcessor(); } + /* + * Filter Chain定义说明: + * 1、一个URL可以配置多个Filter,使用逗号分隔 + * 2、当设置多个过滤器时,全部验证通过,才视为通过 + * 3、部分过滤器可指定参数,如perms,roles + */ + /** - * ShiroFilterFactoryBean 处理拦截资源文件问题。 - * 注意:单独一个ShiroFilterFactoryBean配置是或报错的,因为在 - * 初始化ShiroFilterFactoryBean的时候需要注入:SecurityManager - * Filter Chain定义说明 - * 1、一个URL可以配置多个Filter,使用逗号分隔 - * 2、当设置多个过滤器时,全部验证通过,才视为通过 - * 3、部分过滤器可指定参数,如perms,roles + * @description: 配置Shiro过滤器 + * @param: securityManager + * @date: 2019-08-15 11:49 AM + * @return: org.apache.shiro.spring.web.ShiroFilterFactoryBean */ @Bean(name = "shiroFilter") public ShiroFilterFactoryBean shirFilter(SecurityManager securityManager) { ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean(); - // 必须设置 SecurityManager + // 必须设置SecurityManager shiroFilterFactoryBean.setSecurityManager(securityManager); // 如果不设置默认会自动寻找Web工程根目录下的"/login.jsp"页面 shiroFilterFactoryBean.setLoginUrl("/passport/login/"); - // 登录成功后要跳转的链接 + // 指定登录成功后要跳转的链接 shiroFilterFactoryBean.setSuccessUrl("/index"); - // 未授权界面; + // 指定未授权操作要跳转的链接 shiroFilterFactoryBean.setUnauthorizedUrl("/error/403"); // 配置数据库中的resource Map filterChainDefinitionMap = shiroService.loadFilterChainDefinitions(); @@ -104,6 +118,12 @@ public ShiroFilterFactoryBean shirFilter(SecurityManager securityManager) { return shiroFilterFactoryBean; } + /** + * @description: 开启shiro注解模式(如果使用注解模式, 必须采用cglib针对类进行代理) + * @param: + * @date: 2019-08-15 11:50 AM + * @return: org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator + */ @Bean @DependsOn("lifecycleBeanPostProcessor") public DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator() { @@ -112,33 +132,57 @@ public DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator() { return creator; } + /** + * @description: 开启Shiro-aop注解支持(采用cglib针对类进行代理) + * @param: securityManager + * @date: 2019-08-15 11:54 AM + * @return: org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor + */ + @Bean + public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager) { + AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor = new AuthorizationAttributeSourceAdvisor(); + authorizationAttributeSourceAdvisor.setSecurityManager(securityManager); + return authorizationAttributeSourceAdvisor; + } + + /** + * @description: 配置安全管理器 + * @param: authRealm + * @date: 2019-08-15 11:51 AM + * @return: org.apache.shiro.mgt.SecurityManager + */ @Bean(name = "securityManager") public SecurityManager securityManager(@Qualifier("shiroRealm") ShiroRealm authRealm) { DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager(); - // 设置realm. + // 关联自定义realm securityManager.setRealm(authRealm); + // 关联安全管理器 securityManager.setCacheManager(redisCacheManager()); - // 自定义session管理 使用redis + // 自定义Session管理器 securityManager.setSessionManager(sessionManager()); - // 注入记住我管理器 + // 关联Cookie管理器 securityManager.setRememberMeManager(rememberMeManager()); return securityManager; } - @Bean(name = "shiroRealm") + /** + * @description: 配置自定义Realm + * @param: matcher + * @date: 2019-08-15 11:51 AM + * @return: com.zyd.shiro.business.shiro.realm.ShiroRealm + */ + @Bean(name = "shiroRealm")//the parameter is never used public ShiroRealm shiroRealm(@Qualifier("credentialsMatcher") RetryLimitCredentialsMatcher matcher) { ShiroRealm shiroRealm = new ShiroRealm(); - shiroRealm.setCredentialsMatcher(credentialsMatcher()); + shiroRealm.setCredentialsMatcher(credentialsMatcher()); //设置凭证匹配器 return shiroRealm; } /** - * 凭证匹配器 - * (由于我们的密码校验交给Shiro的SimpleAuthenticationInfo进行处理了 - * 所以我们需要修改下doGetAuthenticationInfo中的代码; - * ) - * - * @return + * @description: 自定义凭证匹配器 + * @param: + * @date: 2019-08-15 11:53 AM + * @return: com.zyd.shiro.business.shiro.credentials.RetryLimitCredentialsMatcher */ @Bean(name = "credentialsMatcher") public RetryLimitCredentialsMatcher credentialsMatcher() { @@ -147,24 +191,10 @@ public RetryLimitCredentialsMatcher credentialsMatcher() { /** - * 开启shiro aop注解支持. - * 使用代理方式;所以需要开启代码支持; - * - * @param securityManager - * @return - */ - @Bean - public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager) { - AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor = new AuthorizationAttributeSourceAdvisor(); - authorizationAttributeSourceAdvisor.setSecurityManager(securityManager); - return authorizationAttributeSourceAdvisor; - } - - /** - * 配置shiro redisManager - * 使用的是shiro-redis开源插件 - * - * @return + * @description: Redis管理器(使用的是shiro - redis开源插件) + * @param: + * @date: 2019-08-15 11:54 AM + * @return: org.crazycake.shiro.RedisManager */ public RedisManager redisManager() { CustomRedisManager redisManager = new CustomRedisManager(); @@ -177,32 +207,36 @@ public RedisManager redisManager() { } /** - * cacheManager 缓存 redis实现 - * 使用的是shiro-redis开源插件 - * - * @return + * @description: Redis缓存管理器(使用的是shiro - redis开源插件) + * @param: + * @date: 2019-08-15 11:55 AM + * @return: org.crazycake.shiro.RedisCacheManager */ @Bean public RedisCacheManager redisCacheManager() { RedisCacheManager redisCacheManager = new RedisCacheManager(); - redisCacheManager.setRedisManager(redisManager()); + redisCacheManager.setRedisManager(redisManager()); //设置Redis管理器 return redisCacheManager; } /** - * RedisSessionDAO shiro sessionDao层的实现 通过redis - * 使用的是shiro-redis开源插件 + * @description: RedisSessionDAO:shiro sessionDao层的实现(使用的是shiro-redis开源插件) + * @param: + * @date: 2019-08-15 11:56 AM + * @return: org.crazycake.shiro.RedisSessionDAO */ -// @Bean public RedisSessionDAO redisSessionDAO() { RedisSessionDAO redisSessionDAO = new RedisSessionDAO(); - redisSessionDAO.setRedisManager(redisManager()); + redisSessionDAO.setRedisManager(redisManager()); //设置Redis管理器 return redisSessionDAO; } /** - * shiro session的管理 + * @description: Session管理器 + * @param: + * @date: 2019-08-15 11:57 AM + * @return: org.apache.shiro.web.session.mgt.DefaultWebSessionManager */ @Bean public DefaultWebSessionManager sessionManager() { @@ -213,27 +247,29 @@ public DefaultWebSessionManager sessionManager() { } /** - * cookie对象; - * - * @return + * @description: 设置Cookie(RememberMe功能) + * @param: + * @date: 2019-08-15 11:58 AM + * @return: org.apache.shiro.web.servlet.SimpleCookie */ public SimpleCookie rememberMeCookie() { - // 这个参数是cookie的名称,对应前端的checkbox的name = rememberMe + // 这个参数是cookie的名称,对应前端的checkbox的name = rememberMe SimpleCookie simpleCookie = new SimpleCookie("rememberMe"); - // 记住我cookie生效时间30天 ,单位秒。 注释掉,默认永久不过期 2018-07-15 + // 记住我cookie生效时间30天,单位秒,默认情况下永不过期 simpleCookie.setMaxAge(redisProperties.getExpire()); return simpleCookie; } /** - * cookie管理对象;记住我功能 - * - * @return + * @description: Cookie管理器(开启RememberMe功能) + * @param: + * @date: 2019-08-15 11:58 AM + * @return: org.apache.shiro.web.mgt.CookieRememberMeManager */ public CookieRememberMeManager rememberMeManager() { CookieRememberMeManager cookieRememberMeManager = new CookieRememberMeManager(); cookieRememberMeManager.setCookie(rememberMeCookie()); - //rememberMe cookie加密的密钥 建议每个项目都不一样 默认AES算法 密钥长度(128 256 512 位) + //设置rememberMe cookie加密的密钥,建议每个项目都不一样,默认AES算法:密钥长度(128 256 512 位) cookieRememberMeManager.setCipherKey(Base64.decode("1QWLxg+NYmxraMoxAXu/Iw==")); return cookieRememberMeManager; } diff --git a/shiro-core/src/main/java/com/zyd/shiro/framework/config/WebMvcConfig.java b/shiro-core/src/main/java/com/zyd/shiro/framework/config/WebMvcConfig.java index 1724579..fc8c310 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/framework/config/WebMvcConfig.java +++ b/shiro-core/src/main/java/com/zyd/shiro/framework/config/WebMvcConfig.java @@ -26,11 +26,11 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; /** - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 1.0 - * @website https://www.zhyd.me - * @date 2018/7/15 15:03 - * @since 1.0 + * @project: springboot-shiro + * @description: WebMVC配置类 + * @date: 2019-08-15 1:29 AM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ @Configuration public class WebMvcConfig implements WebMvcConfigurer { From a9122738f5d5e81221f0f0ed65c42917bf7eee81 Mon Sep 17 00:00:00 2001 From: HuangYuhui Date: Thu, 15 Aug 2019 20:28:52 +0800 Subject: [PATCH 15/27] :art: style(controller) : add the code comment --- .../controller/ErrorPagesController.java | 106 ++++++++++++------ .../controller/ExceptionHandleController.java | 15 +-- .../shiro/controller/PassportController.java | 47 ++++---- .../shiro/controller/RenderController.java | 22 +--- .../controller/RestResourcesController.java | 50 +++++++-- .../shiro/controller/RestRoleController.java | 56 +++++++-- .../shiro/controller/RestUserController.java | 55 ++++++--- 7 files changed, 238 insertions(+), 113 deletions(-) diff --git a/shiro-admin/src/main/java/com/zyd/shiro/controller/ErrorPagesController.java b/shiro-admin/src/main/java/com/zyd/shiro/controller/ErrorPagesController.java index 8050b4d..2631e42 100644 --- a/shiro-admin/src/main/java/com/zyd/shiro/controller/ErrorPagesController.java +++ b/shiro-admin/src/main/java/com/zyd/shiro/controller/ErrorPagesController.java @@ -39,18 +39,12 @@ import java.util.Map; /** - * 重写BasicErrorController,主要负责系统的异常页面的处理以及错误信息的显示 - *

- * 此处指需要记录 - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 1.0 - * @website https://www.zhyd.me - * @date 2018/4/16 16:26 - *

- * 要注意,这个类里面的代码一定不能有异常或者潜在异常发生,否则可能会让程序陷入死循环。 - *

- * @since 1.0 + * @project: springboot-shiro + * @description: 重写BasicErrorController, 主要负责系统的异常页面的处理以及错误信息的显示 + * 注意: 这个类里面的代码一定不能有异常或者潜在异常发生,否则可能会让程序陷入死循环 + * @date: 2019-08-15 7:42 PM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ @Slf4j @Controller @@ -64,9 +58,10 @@ public class ErrorPagesController implements ErrorController { private ServerProperties serverProperties; /** - * 初始化ExceptionController - * - * @param errorAttributes + * @description: 初始化ExceptionController + * @param: errorAttributes + * @date: 2019-08-15 8:10 PM + * @return: */ @Autowired public ErrorPagesController(ErrorAttributes errorAttributes) { @@ -74,6 +69,14 @@ public ErrorPagesController(ErrorAttributes errorAttributes) { this.errorAttributes = errorAttributes; } + /** + * @description: 404:指网页或文件未找到错误 + * @param: request + * @param: response + * @param: webRequest + * @date: 2019-08-15 8:10 PM + * @return: org.springframework.web.servlet.ModelAndView + */ @RequestMapping("/404") public ModelAndView errorHtml404(HttpServletRequest request, HttpServletResponse response, WebRequest webRequest) { response.setStatus(HttpStatus.NOT_FOUND.value()); @@ -82,10 +85,18 @@ public ModelAndView errorHtml404(HttpServletRequest request, HttpServletResponse return new ModelAndView("error/404", model); } + /** + * @description: 403:资源不可用错误 + * @param: request + * @param: response + * @param: webRequest + * @date: 2019-08-15 8:11 PM + * @return: org.springframework.web.servlet.ModelAndView + */ @RequestMapping("/403") public ModelAndView errorHtml403(HttpServletRequest request, HttpServletResponse response, WebRequest webRequest) { response.setStatus(HttpStatus.FORBIDDEN.value()); - // 404拦截规则,如果是静态文件发生的404则不记录到DB + // 404拦截规则,如果是静态文件发生的404则不记录到DB Map model = getErrorAttributes(webRequest, isIncludeStackTrace(request, MediaType.TEXT_HTML)); if (!String.valueOf(model.get("path")).contains(".")) { model.put("status", HttpStatus.FORBIDDEN.value()); @@ -93,6 +104,14 @@ public ModelAndView errorHtml403(HttpServletRequest request, HttpServletResponse return new ModelAndView("error/403", model); } + /** + * @description: 400:访问的页面域名不存在或者请求错误 + * @param: request + * @param: response + * @param: webRequest + * @date: 2019-08-15 8:11 PM + * @return: org.springframework.web.servlet.ModelAndView + */ @RequestMapping("/400") public ModelAndView errorHtml400(HttpServletRequest request, HttpServletResponse response, WebRequest webRequest) { response.setStatus(HttpStatus.BAD_REQUEST.value()); @@ -100,6 +119,14 @@ public ModelAndView errorHtml400(HttpServletRequest request, HttpServletResponse return new ModelAndView("error/400", model); } + /** + * @description: 401:未经授权错误 + * @param: request + * @param: response + * @param: webRequest + * @date: 2019-08-15 8:12 PM + * @return: org.springframework.web.servlet.ModelAndView + */ @RequestMapping("/401") public ModelAndView errorHtml401(HttpServletRequest request, HttpServletResponse response, WebRequest webRequest) { response.setStatus(HttpStatus.UNAUTHORIZED.value()); @@ -107,6 +134,14 @@ public ModelAndView errorHtml401(HttpServletRequest request, HttpServletResponse return new ModelAndView("error/401", model); } + /** + * @description: 500:服务器端发生异常 + * @param: request + * @param: response + * @param: webRequest + * @date: 2019-08-15 8:12 PM + * @return: org.springframework.web.servlet.ModelAndView + */ @RequestMapping("/500") public ModelAndView errorHtml500(HttpServletRequest request, HttpServletResponse response, WebRequest webRequest) { response.setStatus(HttpStatus.INTERNAL_SERVER_ERROR.value()); @@ -121,8 +156,7 @@ public ModelAndView errorHtml500(HttpServletRequest request, HttpServletResponse * @param produces the media type produced (or {@code MediaType.ALL}) * @return if the stacktrace attribute should be included */ - protected boolean isIncludeStackTrace(HttpServletRequest request, - MediaType produces) { + protected boolean isIncludeStackTrace(HttpServletRequest request, MediaType produces) { ErrorProperties.IncludeStacktrace include = this.serverProperties.getError().getIncludeStacktrace(); if (include == ErrorProperties.IncludeStacktrace.ALWAYS) { return true; @@ -132,22 +166,21 @@ protected boolean isIncludeStackTrace(HttpServletRequest request, /** - * 获取错误的信息 - * - * @param webRequest - * @param includeStackTrace - * @return + * @description: 获取错误信息 + * @param: webRequest + * @param: includeStackTrace + * @date: 2019-08-15 8:13 PM + * @return: java.util.Map */ - private Map getErrorAttributes(WebRequest webRequest, - boolean includeStackTrace) { + private Map getErrorAttributes(WebRequest webRequest, boolean includeStackTrace) { return this.errorAttributes.getErrorAttributes(webRequest, includeStackTrace); } /** - * 是否包含trace - * - * @param request - * @return + * @description: 判断是否包含trace + * @param: request + * @date: 2019-08-15 8:13 PM + * @return: boolean */ private boolean getTraceParameter(HttpServletRequest request) { String parameter = request.getParameter("trace"); @@ -155,10 +188,10 @@ private boolean getTraceParameter(HttpServletRequest request) { } /** - * 获取错误编码 - * - * @param request - * @return + * @description: (never used)获取错误编码 + * @param: request + * @date: 2019-08-15 8:14 PM + * @return: org.springframework.http.HttpStatus */ private HttpStatus getStatus(HttpServletRequest request) { Integer statusCode = (Integer) request @@ -175,9 +208,10 @@ private HttpStatus getStatus(HttpServletRequest request) { } /** - * 实现错误路径,暂时无用 - * - * @return + * @description: 实现错误路径, 暂时无用 + * @param: + * @date: 2019-08-15 8:14 PM + * @return: java.lang.String */ @Override public String getErrorPath() { diff --git a/shiro-admin/src/main/java/com/zyd/shiro/controller/ExceptionHandleController.java b/shiro-admin/src/main/java/com/zyd/shiro/controller/ExceptionHandleController.java index da193bf..587e60f 100644 --- a/shiro-admin/src/main/java/com/zyd/shiro/controller/ExceptionHandleController.java +++ b/shiro-admin/src/main/java/com/zyd/shiro/controller/ExceptionHandleController.java @@ -32,14 +32,11 @@ import java.lang.reflect.UndeclaredThrowableException; /** - * 统一异常处理类
- * 捕获程序所有异常,针对不同异常,采取不同的处理方式 - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 1.0 - * @website https://www.zhyd.me - * @date 2018/4/24 14:37 - * @since 1.0 + * @project: springboot-shiro + * @description: 统一异常处理类:捕获程序所有异常,针对不同异常,采取不同的处理方式 + * @date: 2019-08-15 7:38 PM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ @Slf4j @ControllerAdvice @@ -59,7 +56,7 @@ public ResponseVO handle(Throwable e) { log.error(responseStatus.getMessage()); return ResultUtil.error(responseStatus.getCode(), responseStatus.getMessage()); } - e.printStackTrace(); // 打印异常栈 + e.printStackTrace(); //打印异常栈 return ResultUtil.error(CommonConst.DEFAULT_ERROR_CODE, ResponseStatus.ERROR.getMessage()); } diff --git a/shiro-admin/src/main/java/com/zyd/shiro/controller/PassportController.java b/shiro-admin/src/main/java/com/zyd/shiro/controller/PassportController.java index aabea05..d9fff0d 100644 --- a/shiro-admin/src/main/java/com/zyd/shiro/controller/PassportController.java +++ b/shiro-admin/src/main/java/com/zyd/shiro/controller/PassportController.java @@ -35,33 +35,39 @@ import org.springframework.web.servlet.mvc.support.RedirectAttributes; /** - * 登录相关 - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 1.0 - * @website https://www.zhyd.me - * @date 2018/4/24 14:37 - * @since 1.0 + * @project: springboot-shiro + * @description: 登录模块的控制器 + * @date: 2019-08-15 7:25 PM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ @Slf4j @Controller @RequestMapping(value = "/passport") public class PassportController { - @GetMapping("/login") + /** + * @description: 跳转到用户登录页 + * @param: model + * @date: 2019-08-15 7:26 PM + * @return: org.springframework.web.servlet.ModelAndView + */ + @GetMapping("/login")//the parameter is never used public ModelAndView login(Model model) { return ResultUtil.view("/login"); } /** - * 登录 - * - * @param username - * @param password - * @return + * @description: 验证用户登录信息 + * @param: username + * @param: password + * @param: rememberMe + * @param: kaptcha + * @date: 2019-08-15 7:26 PM + * @return: com.zyd.shiro.framework.object.ResponseVO */ @PostMapping("/signin") - @ResponseBody + @ResponseBody//the parameter of 'kaptcha' is never used public ResponseVO submitLogin(String username, String password, boolean rememberMe, String kaptcha) { UsernamePasswordToken token = new UsernamePasswordToken(username, password, rememberMe); //获取当前的Subject @@ -80,17 +86,16 @@ public ResponseVO submitLogin(String username, String password, boolean remember } /** - * 使用权限管理工具进行用户的退出,跳出登录,给出提示信息 - * - * @param redirectAttributes - * @return + * @description: 使用权限管理工具完成用户的退出, 跳出登录, 给出提示信息 + * @param: redirectAttributes + * @date: 2019-08-15 7:30 PM + * @return: org.springframework.web.servlet.ModelAndView */ @GetMapping("/logout") public ModelAndView logout(RedirectAttributes redirectAttributes) { - // http://www.oschina.net/question/99751_91561 - // 此处有坑: 退出登录,其实不用实现任何东西,只需要保留这个接口即可,也不可能通过下方的代码进行退出 + // 问题: http://www.oschina.net/question/99751_91561 + // 解答: 退出登录代码其实不用实现,只需要保留这个接口即可,因为注销功能是由Shiro默认实现的,既而以下用于注销的代码可省略哟 // SecurityUtils.getSubject().logout(); - // 因为退出操作是由Shiro控制的 redirectAttributes.addFlashAttribute("message", "您已安全退出"); return ResultUtil.redirect("index"); } diff --git a/shiro-admin/src/main/java/com/zyd/shiro/controller/RenderController.java b/shiro-admin/src/main/java/com/zyd/shiro/controller/RenderController.java index 72025de..e6da4d6 100644 --- a/shiro-admin/src/main/java/com/zyd/shiro/controller/RenderController.java +++ b/shiro-admin/src/main/java/com/zyd/shiro/controller/RenderController.java @@ -19,16 +19,6 @@ */ package com.zyd.shiro.controller; -/** - * 页面渲染相关 -- 页面跳转 - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 1.0 - * @website https://www.zhyd.me - * @date 2018/4/24 14:37 - * @since 1.0 - */ - import com.zyd.shiro.util.ResultUtil; import org.apache.shiro.authz.annotation.RequiresAuthentication; import org.apache.shiro.authz.annotation.RequiresPermissions; @@ -37,13 +27,11 @@ import org.springframework.web.servlet.ModelAndView; /** - * 页面跳转类 - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 1.0 - * @website https://www.zhyd.me - * @date 2018/4/24 14:37 - * @since 1.0 + * @project: springboot-shiro + * @description: 控制页面的渲染与跳转 + * @date: 2019-08-15 7:21 PM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ @Controller public class RenderController { diff --git a/shiro-admin/src/main/java/com/zyd/shiro/controller/RestResourcesController.java b/shiro-admin/src/main/java/com/zyd/shiro/controller/RestResourcesController.java index 23848bd..e3c84ba 100644 --- a/shiro-admin/src/main/java/com/zyd/shiro/controller/RestResourcesController.java +++ b/shiro-admin/src/main/java/com/zyd/shiro/controller/RestResourcesController.java @@ -19,7 +19,6 @@ */ package com.zyd.shiro.controller; -import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.zyd.shiro.business.entity.Resources; import com.zyd.shiro.business.enums.ResponseStatus; @@ -38,13 +37,11 @@ import org.springframework.web.bind.annotation.RestController; /** - * 系统资源管理 - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 1.0 - * @website https://www.zhyd.me - * @date 2018/4/24 14:37 - * @since 1.0 + * @project: springboot-shiro + * @description: 系统资源管理模块的控制器 + * @date: 2019-08-15 6:51 PM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ @RestController @RequestMapping("/resources") @@ -55,6 +52,12 @@ public class RestResourcesController { @Autowired private ShiroService shiroService; + /** + * @description: 分页显示系统资源信息 + * @param: vo + * @date: 2019-08-15 7:11 PM + * @return: com.zyd.shiro.framework.object.PageResult + */ @RequiresPermissions("resources") @PostMapping("/list") public PageResult getAll(ResourceConditionVO vo) { @@ -62,12 +65,24 @@ public PageResult getAll(ResourceConditionVO vo) { return ResultUtil.tablePage(pageInfo); } + /** + * @description: 获取所选择系统资源信息 + * @param: rid + * @date: 2019-08-15 7:12 PM + * @return: com.zyd.shiro.framework.object.ResponseVO + */ @RequiresPermissions("role:allotResource") @PostMapping("/resourcesWithSelected") public ResponseVO resourcesWithSelected(Long rid) { return ResultUtil.success(null, resourcesService.queryResourcesListWithSelected(rid)); } + /** + * @description: 添加新系统资源信息 + * @param: resources + * @date: 2019-08-15 7:12 PM + * @return: com.zyd.shiro.framework.object.ResponseVO + */ @RequiresPermissions("resource:add") @PostMapping(value = "/add") public ResponseVO add(Resources resources) { @@ -77,6 +92,12 @@ public ResponseVO add(Resources resources) { return ResultUtil.success("成功"); } + /** + * @description: 删除系统资源信息 + * @param: ids 以","分隔的资源id字符串 + * @date: 2019-08-15 7:13 PM + * @return: com.zyd.shiro.framework.object.ResponseVO + */ @RequiresPermissions(value = {"resource:batchDelete", "resource:delete"}, logical = Logical.OR) @PostMapping(value = "/remove") public ResponseVO remove(Long[] ids) { @@ -86,18 +107,29 @@ public ResponseVO remove(Long[] ids) { for (Long id : ids) { resourcesService.removeByPrimaryKey(id); } - //更新权限 shiroService.updatePermission(); return ResultUtil.success("成功删除 [" + ids.length + "] 个资源"); } + /** + * @description: 获取指定的系统资源信息 + * @param: id + * @date: 2019-08-15 7:14 PM + * @return: com.zyd.shiro.framework.object.ResponseVO + */ @RequiresPermissions("resource:edit") @PostMapping("/get/{id}") public ResponseVO get(@PathVariable Long id) { return ResultUtil.success(null, this.resourcesService.getByPrimaryKey(id)); } + /** + * @description: 更新系统资源信息 + * @param: resources + * @date: 2019-08-15 7:15 PM + * @return: com.zyd.shiro.framework.object.ResponseVO + */ @RequiresPermissions("resource:edit") @PostMapping("/edit") public ResponseVO edit(Resources resources) { diff --git a/shiro-admin/src/main/java/com/zyd/shiro/controller/RestRoleController.java b/shiro-admin/src/main/java/com/zyd/shiro/controller/RestRoleController.java index ea0c58f..138f019 100644 --- a/shiro-admin/src/main/java/com/zyd/shiro/controller/RestRoleController.java +++ b/shiro-admin/src/main/java/com/zyd/shiro/controller/RestRoleController.java @@ -41,17 +41,16 @@ import java.util.List; /** - * 系统角色管理 - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 1.0 - * @website https://www.zhyd.me - * @date 2018/4/24 14:37 - * @since 1.0 + * @project: springboot-shiro + * @description: 系统角色管理模块的控制器 + * @date: 2019-08-15 6:51 PM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ @RestController @RequestMapping("/roles") public class RestRoleController { + @Autowired private SysRoleService roleService; @Autowired @@ -59,6 +58,12 @@ public class RestRoleController { @Autowired private ShiroService shiroService; + /** + * @description: 分页显示系统角色信息 + * @param: vo + * @date: 2019-08-15 6:51 PM + * @return: com.zyd.shiro.framework.object.PageResult + */ @RequiresPermissions("roles") @PostMapping("/list") public PageResult getAll(RoleConditionVO vo) { @@ -66,12 +71,25 @@ public PageResult getAll(RoleConditionVO vo) { return ResultUtil.tablePage(pageInfo); } + /** + * @description: 显示所选择的系统角色信息 + * @param: uid + * @date: 2019-08-15 6:52 PM + * @return: com.zyd.shiro.framework.object.ResponseVO> + */ @RequiresPermissions("user:allotRole") @PostMapping("/rolesWithSelected") public ResponseVO> rolesWithSelected(Integer uid) { return ResultUtil.success(null, roleService.queryRoleListWithSelected(uid)); } + /** + * @description: 更新指定角色所拥有的资源信息 + * @param: roleId + * @param: resourcesId + * @date: 2019-08-15 6:53 PM + * @return: com.zyd.shiro.framework.object.ResponseVO + */ @RequiresPermissions("role:allotResource") @PostMapping("/saveRoleResources") public ResponseVO saveRoleResources(Long roleId, String resourcesId) { @@ -84,6 +102,12 @@ public ResponseVO saveRoleResources(Long roleId, String resourcesId) { return ResultUtil.success("成功"); } + /** + * @description: 添加新系统角色信息 + * @param: role + * @date: 2019-08-15 6:54 PM + * @return: com.zyd.shiro.framework.object.ResponseVO + */ @RequiresPermissions("role:add") @PostMapping(value = "/add") public ResponseVO add(Role role) { @@ -91,6 +115,12 @@ public ResponseVO add(Role role) { return ResultUtil.success("成功"); } + /** + * @description: 删除系统角色信息 + * @param: ids 以","分隔的角色id字符串 + * @date: 2019-08-15 6:55 PM + * @return: com.zyd.shiro.framework.object.ResponseVO + */ @RequiresPermissions(value = {"role:batchDelete", "role:delete"}, logical = Logical.OR) @PostMapping(value = "/remove") public ResponseVO remove(Long[] ids) { @@ -104,12 +134,24 @@ public ResponseVO remove(Long[] ids) { return ResultUtil.success("成功删除 [" + ids.length + "] 个角色"); } + /** + * @description: 获取指定的系统角色信息 + * @param: id + * @date: 2019-08-15 6:56 PM + * @return: com.zyd.shiro.framework.object.ResponseVO + */ @RequiresPermissions("role:edit") @PostMapping("/get/{id}") public ResponseVO get(@PathVariable Long id) { return ResultUtil.success(null, this.roleService.getByPrimaryKey(id)); } + /** + * @description: 更新系统角色信息 + * @param: role + * @date: 2019-08-15 6:57 PM + * @return: com.zyd.shiro.framework.object.ResponseVO + */ @RequiresPermissions("role:edit") @PostMapping("/edit") public ResponseVO edit(Role role) { diff --git a/shiro-admin/src/main/java/com/zyd/shiro/controller/RestUserController.java b/shiro-admin/src/main/java/com/zyd/shiro/controller/RestUserController.java index 6ee93ea..7899dd7 100644 --- a/shiro-admin/src/main/java/com/zyd/shiro/controller/RestUserController.java +++ b/shiro-admin/src/main/java/com/zyd/shiro/controller/RestUserController.java @@ -39,22 +39,27 @@ import org.springframework.web.bind.annotation.RestController; /** - * 用户管理 - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 1.0 - * @website https://www.zhyd.me - * @date 2018/4/24 14:37 - * @since 1.0 + * @project: springboot-shiro + * @description: 用户管理模块的控制器 + * @date: 2019-08-15 6:36 PM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ @RestController @RequestMapping("/user") public class RestUserController { + @Autowired private SysUserService userService; @Autowired private SysUserRoleService userRoleService; + /** + * @description: 分页显示用户信息 + * @param: vo + * @date: 2019-08-15 6:37 PM + * @return: com.zyd.shiro.framework.object.PageResult + */ @RequiresPermissions("users") @PostMapping("/list") public PageResult list(UserConditionVO vo) { @@ -63,13 +68,11 @@ public PageResult list(UserConditionVO vo) { } /** - * 保存用户角色 - * - * @param userId - * @param roleIds - * 用户角色 - * 此处获取的参数的角色id是以 “,” 分隔的字符串 - * @return + * @description: 更新用户角色信息 + * @param: userId + * @param: roleIds 以","分隔的角色id字符串 + * @date: 2019-08-15 6:38 PM + * @return: com.zyd.shiro.framework.object.ResponseVO */ @RequiresPermissions("user:allotRole") @PostMapping("/saveUserRoles") @@ -81,6 +84,12 @@ public ResponseVO saveUserRoles(Long userId, String roleIds) { return ResultUtil.success("成功"); } + /** + * @description: 添加新用户 + * @param: user + * @date: 2019-08-15 6:40 PM + * @return: com.zyd.shiro.framework.object.ResponseVO + */ @RequiresPermissions("user:add") @PostMapping(value = "/add") public ResponseVO add(User user) { @@ -98,6 +107,12 @@ public ResponseVO add(User user) { } } + /** + * @description: 删除用户信息 + * @param: ids 以","分隔的用户id字符串 + * @date: 2019-08-15 6:43 PM + * @return: com.zyd.shiro.framework.object.ResponseVO + */ @RequiresPermissions(value = {"user:batchDelete", "user:delete"}, logical = Logical.OR) @PostMapping(value = "/remove") public ResponseVO remove(Long[] ids) { @@ -111,12 +126,24 @@ public ResponseVO remove(Long[] ids) { return ResultUtil.success("成功删除 [" + ids.length + "] 个用户"); } + /** + * @description: 获取指定的用户信息 + * @param: id + * @date: 2019-08-15 6:45 PM + * @return: com.zyd.shiro.framework.object.ResponseVO + */ @RequiresPermissions("user:edit") @PostMapping("/get/{id}") public ResponseVO get(@PathVariable Long id) { return ResultUtil.success(null, this.userService.getByPrimaryKey(id)); } + /** + * @description: 更新用户信息 + * @param: user + * @date: 2019-08-15 6:47 PM + * @return: com.zyd.shiro.framework.object.ResponseVO + */ @RequiresPermissions("user:edit") @PostMapping("/edit") public ResponseVO edit(User user) { From a08d4a45434a66061b583935077e0f2f2ebb75fb Mon Sep 17 00:00:00 2001 From: HuangYuhui Date: Fri, 16 Aug 2019 15:25:59 +0800 Subject: [PATCH 16/27] :art: style(core-framework-holder) : add the code comment --- .../shiro/framework/holder/RequestHolder.java | 64 ++++++++++--------- .../framework/holder/SpringContextHolder.java | 52 ++++++++------- 2 files changed, 62 insertions(+), 54 deletions(-) diff --git a/shiro-core/src/main/java/com/zyd/shiro/framework/holder/RequestHolder.java b/shiro-core/src/main/java/com/zyd/shiro/framework/holder/RequestHolder.java index 71cd5bc..baf5fc3 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/framework/holder/RequestHolder.java +++ b/shiro-core/src/main/java/com/zyd/shiro/framework/holder/RequestHolder.java @@ -33,20 +33,20 @@ import javax.servlet.http.HttpSession; /** - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @website https://www.zhyd.me - * @version 1.0 - * @date 2018/4/16 16:26 - * @since 1.0 + * @project: springboot-shiro + * @description: 请求层的基础支架 + * @date: 2019-08-16 2:07 PM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ @Slf4j public class RequestHolder { /** - * 获取request - * - * @return HttpServletRequest + * @description: 获取request + * @param: + * @date: 2019-08-16 2:09 PM + * @return: javax.servlet.http.HttpServletRequest */ public static HttpServletRequest getRequest() { log.debug("getRequest -- Thread id :{}, name : {}", Thread.currentThread().getId(), Thread.currentThread().getName()); @@ -58,9 +58,10 @@ public static HttpServletRequest getRequest() { } /** - * 获取Response - * - * @return HttpServletRequest + * @description: (never used)获取Response + * @param: + * @date: 2019-08-16 2:11 PM + * @return: javax.servlet.http.HttpServletResponse */ public static HttpServletResponse getResponse() { log.debug("getResponse -- Thread id :{}, name : {}", Thread.currentThread().getId(), Thread.currentThread().getName()); @@ -72,9 +73,10 @@ public static HttpServletResponse getResponse() { } /** - * 获取session - * - * @return HttpSession + * @description: (never used)获取session + * @param: + * @date: 2019-08-16 2:11 PM + * @return: javax.servlet.http.HttpSession */ public static HttpSession getSession() { log.debug("getSession -- Thread id :{}, name : {}", Thread.currentThread().getId(), Thread.currentThread().getName()); @@ -86,10 +88,10 @@ public static HttpSession getSession() { } /** - * 获取session的Attribute - * - * @param name session的key - * @return Object + * @description: 获取session中的Attribute + * @param: name + * @date: 2019-08-16 2:12 PM + * @return: java.lang.Object */ public static Object getSession(String name) { log.debug("getSession -- Thread id :{}, name : {}", Thread.currentThread().getId(), Thread.currentThread().getName()); @@ -101,10 +103,11 @@ public static Object getSession(String name) { } /** - * 添加session - * - * @param name - * @param value + * @description: 添加session + * @param: name + * @param: value + * @date: 2019-08-16 2:14 PM + * @return: void */ public static void setSession(String name, Object value) { log.debug("setSession -- Thread id :{}, name : {}", Thread.currentThread().getId(), Thread.currentThread().getName()); @@ -116,10 +119,10 @@ public static void setSession(String name, Object value) { } /** - * 清除指定session - * - * @param name - * @return void + * @description: 清除指定session + * @param: name + * @date: 2019-08-16 2:15 PM + * @return: void */ public static void removeSession(String name) { log.debug("removeSession -- Thread id :{}, name : {}", Thread.currentThread().getId(), Thread.currentThread().getName()); @@ -131,9 +134,10 @@ public static void removeSession(String name) { } /** - * 获取所有session key - * - * @return String[] + * @description: 获取所有的session key + * @param: + * @date: 2019-08-16 2:15 PM + * @return: java.lang.String[] */ public static String[] getSessionKeys() { log.debug("getSessionKeys -- Thread id :{}, name : {}", Thread.currentThread().getId(), Thread.currentThread().getName()); diff --git a/shiro-core/src/main/java/com/zyd/shiro/framework/holder/SpringContextHolder.java b/shiro-core/src/main/java/com/zyd/shiro/framework/holder/SpringContextHolder.java index 1c33792..55bf32f 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/framework/holder/SpringContextHolder.java +++ b/shiro-core/src/main/java/com/zyd/shiro/framework/holder/SpringContextHolder.java @@ -1,18 +1,18 @@ /** * MIT License - * + *

* Copyright (c) 2018 yadong.zhang - * + *

* Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * + *

* The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. - * + *

* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -29,11 +29,11 @@ import org.springframework.stereotype.Component; /** - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @website https://www.zhyd.me - * @version 1.0 - * @date 2018/4/16 16:26 - * @since 1.0 + * @project: springboot-shiro + * @description: SpringContext的基础支架 + * @date: 2019-08-16 3:18 PM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ @Component public class SpringContextHolder implements ApplicationContextAware { @@ -41,10 +41,10 @@ public class SpringContextHolder implements ApplicationContextAware { private static ApplicationContext appContext = null; /** - * 通过name获取 Bean. - * - * @param name - * @return + * @description: (never used)通过name获取指定的Bean + * @param: name + * @date: 2019-08-16 3:20 PM + * @return: java.lang.Object */ public static Object getBean(String name) { return appContext.getBean(name); @@ -52,28 +52,32 @@ public static Object getBean(String name) { } /** - * 通过class获取Bean. - * - * @param clazz - * @param - * @return + * @description: 通过class获取指定的Bean + * @param: clazz + * @date: 2019-08-16 3:20 PM + * @return: T */ public static T getBean(Class clazz) { return appContext.getBean(clazz); } /** - * 通过name,以及Clazz返回指定的Bean - * - * @param name - * @param clazz - * @param - * @return + * @description: (never used)通过name及clazz获取指定的Bean + * @param: name + * @param: clazz + * @date: 2019-08-16 3:21 PM + * @return: T */ public static T getBean(String name, Class clazz) { return appContext.getBean(name, clazz); } + /** + * @description: 初始化applicationContext + * @param: applicationContext + * @date: 2019-08-16 3:21 PM + * @return: void + */ @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { if (appContext == null) { From cd5b99b69f974019c76bcc45bbec1ed1f0c903ce Mon Sep 17 00:00:00 2001 From: HuangYuhui Date: Fri, 16 Aug 2019 16:02:54 +0800 Subject: [PATCH 17/27] :art: style(core-plugin) : add the code comment --- .../main/java/com/zyd/shiro/plugin/BaseMapper.java | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/shiro-core/src/main/java/com/zyd/shiro/plugin/BaseMapper.java b/shiro-core/src/main/java/com/zyd/shiro/plugin/BaseMapper.java index dcabc53..1170bdd 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/plugin/BaseMapper.java +++ b/shiro-core/src/main/java/com/zyd/shiro/plugin/BaseMapper.java @@ -23,14 +23,12 @@ import tk.mybatis.mapper.common.MySqlMapper; /** - * 公有Mapper - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 1.0 - * @website https://www.zhyd.me - * @date 2018/4/16 16:26 - * @since 1.0 + * @project: springboot-shiro + * @description: 通用的Mapper接口:提高代码的简洁及可维护性 + * @date: 2019-08-16 3:51 PM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ public interface BaseMapper extends Mapper, MySqlMapper { - // 特别注意,该接口不能被扫描到,否则会出错 + // 特别注意:该接口不能被扫描到,否则会出错 } From a303ea7ef5be75af8e522680b4aea19cbfebd192 Mon Sep 17 00:00:00 2001 From: HuangYuhui Date: Fri, 16 Aug 2019 16:32:01 +0800 Subject: [PATCH 18/27] :art: style(core-framework-object) : add the code comment --- .../shiro/framework/object/AbstractBO.java | 18 ++-- .../shiro/framework/object/AbstractDO.java | 20 ++--- .../framework/object/AbstractService.java | 90 ++++++++++--------- .../framework/object/BaseConditionVO.java | 5 +- .../shiro/framework/object/PageResult.java | 13 ++- .../shiro/framework/object/ResponseVO.java | 14 +-- 6 files changed, 81 insertions(+), 79 deletions(-) diff --git a/shiro-core/src/main/java/com/zyd/shiro/framework/object/AbstractBO.java b/shiro-core/src/main/java/com/zyd/shiro/framework/object/AbstractBO.java index 795ac71..02dc935 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/framework/object/AbstractBO.java +++ b/shiro-core/src/main/java/com/zyd/shiro/framework/object/AbstractBO.java @@ -1,18 +1,18 @@ /** * MIT License - * + *

* Copyright (c) 2018 yadong.zhang - * + *

* Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * + *

* The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. - * + *

* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -26,11 +26,11 @@ import java.io.Serializable; /** - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @website https://www.zhyd.me - * @version 1.0 - * @date 2018/4/16 16:26 - * @since 1.0 + * @project: springboot-shiro + * @description: (Business Object)业务对象 + * @date: 2019-08-16 3:37 PM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ public abstract class AbstractBO implements Serializable { private static final long serialVersionUID = -3737736141782545763L; diff --git a/shiro-core/src/main/java/com/zyd/shiro/framework/object/AbstractDO.java b/shiro-core/src/main/java/com/zyd/shiro/framework/object/AbstractDO.java index dce65ff..cfe517e 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/framework/object/AbstractDO.java +++ b/shiro-core/src/main/java/com/zyd/shiro/framework/object/AbstractDO.java @@ -1,18 +1,18 @@ /** * MIT License - * + *

* Copyright (c) 2018 yadong.zhang - * + *

* Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * + *

* The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. - * + *

* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -33,22 +33,22 @@ import java.util.Date; /** - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @website https://www.zhyd.me - * @version 1.0 - * @date 2018/4/16 16:26 - * @since 1.0 + * @project: springboot-shiro + * @description: (Data Transfer Object)数据传输对象 + * @date: 2019-08-16 3:41 PM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ @Data @EqualsAndHashCode(callSuper = false) public abstract class AbstractDO implements Serializable { + /** * @fieldName: serialVersionUID * @fieldType: long */ private static final long serialVersionUID = 5088697673359856350L; - @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; diff --git a/shiro-core/src/main/java/com/zyd/shiro/framework/object/AbstractService.java b/shiro-core/src/main/java/com/zyd/shiro/framework/object/AbstractService.java index 2fb2a74..8fb5f12 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/framework/object/AbstractService.java +++ b/shiro-core/src/main/java/com/zyd/shiro/framework/object/AbstractService.java @@ -1,18 +1,18 @@ /** * MIT License - * + *

* Copyright (c) 2018 yadong.zhang - * + *

* Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * + *

* The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. - * + *

* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -26,81 +26,83 @@ import java.util.List; /** - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @website https://www.zhyd.me - * @version 1.0 - * @date 2018/4/16 16:26 - * @since 1.0 + * @project: springboot-shiro + * @description: 通用的Service接口:提高代码的简洁及可维护性 + * @date: 2019-08-16 3:47 PM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ public interface AbstractService { /** - * 保存一个实体,null的属性不会保存,会使用数据库默认值 - * - * @param entity - * @return + * @description: 保存一个实体, null的属性不会保存(使用数据库默认值) + * @param: entity + * @date: 2019-08-16 3:47 PM + * @return: T */ T insert(T entity); /** - * 批量插入,支持批量插入的数据库可以使用,例如MySQL,H2等,另外该接口限制实体包含id属性并且必须为自增列 - * - * @param entities + * @description: 批量插入:既支持批量插入的数据库可以使用,例如MySQL,H2等,另外该接口限制实体包含id属性并且必须为自增列 + * @param: entities + * @date: 2019-08-16 4:05 PM + * @return: void */ void insertList(List entities); /** - * 根据主键字段进行删除,方法参数必须包含完整的主键属性 - * - * @param primaryKey - * @return + * @description: 根据主键字段进行删除, 方法参数必须包含完整的主键属性 + * @param: primaryKey + * @date: 2019-08-16 4:06 PM + * @return: boolean */ boolean removeByPrimaryKey(PK primaryKey); /** - * 根据主键更新实体全部字段,null值会被更新 - * - * @param entity - * @return + * @description: 根据主键更新实体全部字段, null值也会被更新 + * @param: entity + * @date: 2019-08-16 4:07 PM + * @return: boolean */ boolean update(T entity); /** - * 根据主键更新属性不为null的值 - * - * @param entity - * @return + * @description: 根据主键更新属性不为null的值 + * @param: entity + * @date: 2019-08-16 4:08 PM + * @return: boolean */ boolean updateSelective(T entity); /** - * 根据主键字段进行查询,方法参数必须包含完整的主键属性,查询条件使用等号 - * - * @param primaryKey - * @return + * @description: 根据主键字段进行查询, 方法参数必须包含完整的主键属性, 查询条件使用等号 + * @param: primaryKey + * @date: 2019-08-16 4:09 PM + * @return: T */ T getByPrimaryKey(PK primaryKey); /** - * 根据实体中的属性进行查询,只能有一个返回值,有多个结果时抛出异常,查询条件使用等号 - * - * @param entity - * @return + * @description: 根据实体中的属性进行查询, 只能有一个返回值, 有多个结果时抛出异常, 查询条件使用等号 + * @param: entity + * @date: 2019-08-16 4:11 PM + * @return: T */ T getOneByEntity(T entity); /** - * 查询全部结果,listByEntity(null)方法能达到同样的效果 - * - * @return + * @description: 查询全部结果, 注:listByEntity(null)方法能达到同样的效果 + * @param: + * @date: 2019-08-16 4:12 PM + * @return: java.util.List */ List listAll(); /** - * 根据实体中的属性值进行查询,查询条件使用等号 - * - * @param entity - * @return + * @description: (never used)根据实体中的属性值进行查询, 查询条件使用等号 + * @param: entity + * @date: 2019-08-16 4:12 PM + * @return: java.util.List */ List listByEntity(T entity); -} \ No newline at end of file +} diff --git a/shiro-core/src/main/java/com/zyd/shiro/framework/object/BaseConditionVO.java b/shiro-core/src/main/java/com/zyd/shiro/framework/object/BaseConditionVO.java index c7504b8..9371c6c 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/framework/object/BaseConditionVO.java +++ b/shiro-core/src/main/java/com/zyd/shiro/framework/object/BaseConditionVO.java @@ -31,8 +31,8 @@ /** * @project: springboot-shiro - * @description: 基础信息 - * @date: 2019-08-15 10:27 AM + * @description: 基础的条件值对象(Value Object) + * @date: 2019-08-16 4:30 PM * @version: 1.0 * @website: https://yubuntu0109.github.io/ */ @@ -55,6 +55,7 @@ public int getPageSize() { return pageSize > 0 ? pageSize : DEFAULT_PAGE_SIZE; } + //the method is never used public int getPageStart() { return pageNumber > 0 ? (pageNumber - 1) * getPageSize() : 0; } diff --git a/shiro-core/src/main/java/com/zyd/shiro/framework/object/PageResult.java b/shiro-core/src/main/java/com/zyd/shiro/framework/object/PageResult.java index 1741cd9..e26d6a8 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/framework/object/PageResult.java +++ b/shiro-core/src/main/java/com/zyd/shiro/framework/object/PageResult.java @@ -25,13 +25,11 @@ import java.util.List; /** - * bootstrap table用到的返回json格式 - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 1.0 - * @website https://www.zhyd.me - * @date 2018/4/16 16:26 - * @since 1.0 + * @project: springboot-shiro + * @description: 分页结果:BootStrap table中需获取的json格式数据 + * @date: 2019-08-16 4:17 PM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ @Data @EqualsAndHashCode(callSuper = false) @@ -44,6 +42,7 @@ public PageResult(Long total, List rows) { this.rows = rows; } + //the constructor is never used public PageResult() { } } diff --git a/shiro-core/src/main/java/com/zyd/shiro/framework/object/ResponseVO.java b/shiro-core/src/main/java/com/zyd/shiro/framework/object/ResponseVO.java index 37aeeb5..f1b1d98 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/framework/object/ResponseVO.java +++ b/shiro-core/src/main/java/com/zyd/shiro/framework/object/ResponseVO.java @@ -29,13 +29,11 @@ import java.util.List; /** - * controller返回json - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 1.0 - * @website https://www.zhyd.me - * @date 2018/4/16 16:26 - * @since 1.0 + * @project: springboot-shiro + * @description: Controller层需返回的json格式数据 + * @date: 2019-08-16 4:17 PM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ @Data @EqualsAndHashCode(callSuper = false) @@ -50,10 +48,12 @@ public ResponseVO(Integer status, String message, T data) { this.data = data; } + //the constructor is never used public ResponseVO(ResponseStatus status, T data) { this(status.getCode(), status.getMessage(), data); } + //the method is never used public String toJson() { T t = this.getData(); if (t instanceof List || t instanceof Collection) { From 2941dcc327ee81cc6e20b41ccc148bce23066f6b Mon Sep 17 00:00:00 2001 From: HuangYuhui Date: Fri, 16 Aug 2019 21:42:11 +0800 Subject: [PATCH 19/27] :lipstick: style : update the user portrait --- .../static/assets/images/default-portrait.png | Bin 0 -> 2988 bytes .../main/resources/templates/layout/header.ftl | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 shiro-admin/src/main/resources/static/assets/images/default-portrait.png diff --git a/shiro-admin/src/main/resources/static/assets/images/default-portrait.png b/shiro-admin/src/main/resources/static/assets/images/default-portrait.png new file mode 100644 index 0000000000000000000000000000000000000000..79cd837a1c746045b91973c0c8410e74d81d47b9 GIT binary patch literal 2988 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 bqB7YQw%Q}rZ(yIZe&K+*i8ZRi$UXXhH9v_F literal 0 HcmV?d00001 diff --git a/shiro-admin/src/main/resources/templates/layout/header.ftl b/shiro-admin/src/main/resources/templates/layout/header.ftl index 967f3cc..2a276b1 100644 --- a/shiro-admin/src/main/resources/templates/layout/header.ftl +++ b/shiro-admin/src/main/resources/templates/layout/header.ftl @@ -32,10 +32,10 @@

- ... + ...
- 早上好, + 早上好 ~

尊敬的管理员

From 1eaa619ea04687ddecfdd682e31d4509006be174 Mon Sep 17 00:00:00 2001 From: HuangYuhui Date: Fri, 16 Aug 2019 21:43:55 +0800 Subject: [PATCH 20/27] :lipstick: style(index.ftl) : update the timeline --- .../src/main/resources/templates/index.ftl | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/shiro-admin/src/main/resources/templates/index.ftl b/shiro-admin/src/main/resources/templates/index.ftl index 6196d6f..fac418d 100644 --- a/shiro-admin/src/main/resources/templates/index.ftl +++ b/shiro-admin/src/main/resources/templates/index.ftl @@ -20,31 +20,43 @@
  • +
    +

    拥抱该项目~ 提高代码可读性ing

    + +

    Stay hungray, Stay foolish. -- Steve Jobs

    +
    +
    +
  • +
  • +
    +

    添加Druid监控

    -

    Talk is cheap, show me the code. -- Linus Torvalds

    +

    Talk is cheap, show me the code. -- Linus Torvalds

  • 完善代码、流程,测试角色权限

    -

    Talk is cheap, show me the code. -- Linus Torvalds

    +

    Talk is cheap, show me the code. -- Linus Torvalds

  • 项目提交到Gitee

    From 08734752428683395c92a06d37c3da3eec758e79 Mon Sep 17 00:00:00 2001 From: HuangYuhui Date: Sat, 17 Aug 2019 08:12:36 +0800 Subject: [PATCH 21/27] :wrench: style(application.yml) : update the code comment --- .../src/main/resources/application.yml | 42 +++++++++---------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/shiro-admin/src/main/resources/application.yml b/shiro-admin/src/main/resources/application.yml index dad3efe..eae4cb4 100644 --- a/shiro-admin/src/main/resources/application.yml +++ b/shiro-admin/src/main/resources/application.yml @@ -1,7 +1,7 @@ # Server settings server: port: 8080 - # HTTP请求和响应头的最大量,以字节为单位,默认值为4096字节,超过此长度的部分不予处理,一般8K。解决java.io.EOFException: null问题 + # HTTP请求和响应头的最大量,以字节为单位,默认值为4096字节,超过此长度的部分不予处理,一般8K. 解决java.io.EOFException: null问题 max-http-header-size: 8192 use-forward-headers: true compression: @@ -14,14 +14,14 @@ server: port-header: X-Forwarded-Port uri-encoding: UTF-8 basedir: /var/tmp/website-app -# SPRING PROFILES +# Spring profiles spring: datasource: type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/shiro?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false - username: root - password: root + username: + password: application: name: shiro-admin freemarker: @@ -65,59 +65,59 @@ spring: # redis缓存服务配置 session: store-type: redis - # Redis数据库索引(默认为0) + # Redis数据库索引(默认为0) redis: database: 1 # Redis服务器地址 host: 127.0.0.1 # Redis服务器连接端口 port: 6379 - # Redis服务器连接密码(默认为空) - password: qwe!@#123 - # 连接池最大连接数(使用负值表示没有限制) + # Redis服务器连接密码(默认为空) + password: + # 连接池最大连接数(使用负值表示没有限制) pool: maxActive: 8 - # 连接池最大阻塞等待时间(使用负值表示没有限制) + # 连接池最大阻塞等待时间(使用负值表示没有限制) maxWait: -1 # 连接池中的最大空闲连接 maxIdle: 8 # 连接池中的最小空闲连接 minIdle: 0 - # 连接超时时间(毫秒) + # 连接超时时间(毫秒) timeout: 0 - # 默认的数据过期时间,主要用于shiro权限管理 + # 默认的数据过期时间,主要用于shiro权限管理 expire: 2592000 # MyBatis mybatis: type-aliases-package: com.zyd.shiro.persistence.beans mapper-locations: classpath:/mybatis/*.xml -# mapper +# Mapper mapper: mappers: - com.zyd.shiro.plugin.BaseMapper not-empty: false identity: MYSQL -# pagehelper +# PageHelper pagehelper: helper-dialect: mysql reasonable: true support-methods-arguments: true params: count=countSql +# Banner banner: charset: UTF-8 - -################################### 程序自定义配置 ################################### +# 程序自定义配置 zyd: druid: - # druid访问用户名(默认:zyd-druid) + # druid访问用户名(默认:zyd-druid) username: zyd-druid - # druid访问密码(默认:zyd-druid) + # druid访问密码(默认:zyd-druid) password: zyd-druid - # druid访问地址(默认:/druid/*) + # druid访问地址(默认:/druid/*) servletPath: /druid/* - # 启用重置功能(默认false) + # 启用重置功能(默认false) resetEnable: false - # 白名单(非必填), list + # 白名单(非必填), list allowIps[0]: - # 黑名单(非必填), list + # 黑名单(非必填), list denyIps[0]: From 9c648fde34786bef302e3afae7d96a88eadac0f7 Mon Sep 17 00:00:00 2001 From: HuangYuhui Date: Sat, 17 Aug 2019 13:24:15 +0800 Subject: [PATCH 22/27] :art: style(core-service) : add the code comment --- .../service/impl/ShiroServiceImpl.java | 46 +++--- .../service/impl/SysResourcesServiceImpl.java | 144 +++++++++--------- .../impl/SysRoleResourcesServiceImpl.java | 128 +++++++++------- .../service/impl/SysRoleServiceImpl.java | 115 +++++++------- .../service/impl/SysUserRoleServiceImpl.java | 126 ++++++++------- .../service/impl/SysUserServiceImpl.java | 108 ++++++++----- 6 files changed, 369 insertions(+), 298 deletions(-) diff --git a/shiro-core/src/main/java/com/zyd/shiro/business/service/impl/ShiroServiceImpl.java b/shiro-core/src/main/java/com/zyd/shiro/business/service/impl/ShiroServiceImpl.java index 80d269c..09d7da9 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/business/service/impl/ShiroServiceImpl.java +++ b/shiro-core/src/main/java/com/zyd/shiro/business/service/impl/ShiroServiceImpl.java @@ -45,13 +45,11 @@ import java.util.Map; /** - * Shiro-权限相关的业务处理 - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 1.0 - * @website https://www.zhyd.me - * @date 2018/4/25 14:37 - * @since 1.0 + * @project: springboot-shiro + * @description: 实现Shiro权限相关的业务处理 + * @date: 2019-08-17 12:55 AM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ @Slf4j @Service @@ -63,18 +61,21 @@ public class ShiroServiceImpl implements ShiroService { private SysUserService userService; /** - * 初始化权限 + * @description: 初始化权限 + * @param: + * @date: 2019-08-17 1:06 PM + * @return: java.util.Map */ @Override public Map loadFilterChainDefinitions() { /* 配置访问权限 - anon:所有url都都可以匿名访问 - - authc: 需要认证才能进行访问(此处指所有非匿名的路径都需要登陆才能访问) + - authc: 需要认证才能进行访问(此处指所有非匿名的路径都需要登陆才能访问) - user:配置记住我或认证通过可以访问 */ Map filterChainDefinitionMap = new LinkedHashMap(); - // 配置退出过滤器,其中的具体的退出代码Shiro已经替我们实现了 + // 配置退出过滤器(注:其中的具体的注销代码Shiro已经替我们实现咯) filterChainDefinitionMap.put("/passport/logout", "logout"); filterChainDefinitionMap.put("/passport/login", "anon"); filterChainDefinitionMap.put("/passport/signin", "anon"); @@ -89,13 +90,17 @@ public Map loadFilterChainDefinitions() { filterChainDefinitionMap.put(resources.getUrl(), permission); } } - // 本例子中并不存在什么特别关键的操作,所以直接使用user认证。如果有朋友是参考本例子的shiro开发其他安全功能(比如支付等)时,建议针对这类操作使用authc权限 by yadong.zhang + // 本项目中并不存在什么特别关键的操作,所以直接使用user认证 + // 如果有朋友是参考本例子的shiro开发其他安全功能(比如支付等)时,建议针对这类操作使用authc权限 by yadong.zhang filterChainDefinitionMap.put("/**", "user"); return filterChainDefinitionMap; } /** - * 重新加载权限 + * @description: 重新加载权限 + * @param: + * @date: 2019-08-17 1:10 PM + * @return: void */ @Override public void updatePermission() { @@ -107,14 +112,13 @@ public void updatePermission() { } catch (Exception e) { throw new RuntimeException("get ShiroFilter from shiroFilterFactoryBean error!"); } - PathMatchingFilterChainResolver filterChainResolver = (PathMatchingFilterChainResolver) shiroFilter.getFilterChainResolver(); DefaultFilterChainManager manager = (DefaultFilterChainManager) filterChainResolver.getFilterChainManager(); // 清空老的权限控制 manager.getFilterChains().clear(); - shirFilter.getFilterChainDefinitionMap().clear(); + // 重新初始化过滤链 shirFilter.setFilterChainDefinitionMap(loadFilterChainDefinitions()); // 重新构建生成 Map chains = shirFilter.getFilterChainDefinitionMap(); @@ -127,9 +131,10 @@ public void updatePermission() { } /** - * 重新加载用户权限 - * - * @param user + * @description: 重新加载用户权限 + * @param: user + * @date: 2019-08-17 1:11 PM + * @return: void */ @Override public void reloadAuthorizingByUserId(User user) { @@ -147,9 +152,10 @@ public void reloadAuthorizingByUserId(User user) { } /** - * 重新加载所有拥有roleId角色的用户的权限 - * - * @param roleId + * @description: 重新加载所有拥有roleId角色的用户的权限 + * @param: roleId + * @date: 2019-08-17 1:11 PM + * @return: void */ @Override public void reloadAuthorizingByRoleId(Long roleId) { diff --git a/shiro-core/src/main/java/com/zyd/shiro/business/service/impl/SysResourcesServiceImpl.java b/shiro-core/src/main/java/com/zyd/shiro/business/service/impl/SysResourcesServiceImpl.java index 050dd40..69990a1 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/business/service/impl/SysResourcesServiceImpl.java +++ b/shiro-core/src/main/java/com/zyd/shiro/business/service/impl/SysResourcesServiceImpl.java @@ -34,13 +34,11 @@ import java.util.*; /** - * 系统资源 - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 1.0 - * @website https://www.zhyd.me - * @date 2018/4/16 16:26 - * @since 1.0 + * @project: springboot-shiro + * @description: 实现系统资源相关的业务处理 + * @date: 2019-08-17 11:45 AM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ @Service public class SysResourcesServiceImpl implements SysResourcesService { @@ -49,10 +47,10 @@ public class SysResourcesServiceImpl implements SysResourcesService { private SysResourceMapper resourceMapper; /** - * 分页查询 - * - * @param vo - * @return + * @description: 分页查询系统资源信息 + * @param: vo + * @date: 2019-08-17 11:45 AM + * @return: com.github.pagehelper.PageInfo */ @Override public PageInfo findPageBreakByCondition(ResourceConditionVO vo) { @@ -71,10 +69,10 @@ public PageInfo findPageBreakByCondition(ResourceConditionVO vo) { } /** - * 获取用户的资源列表 - * - * @param map - * @return + * @description: 获取用户所拥有的资源列表 + * @param: map + * @date: 2019-08-17 12:27 PM + * @return: java.util.List */ @Override public List listUserResources(Map map) { @@ -90,10 +88,10 @@ public List listUserResources(Map map) { } /** - * 获取ztree使用的资源列表 - * - * @param rid - * @return + * @description: 获取ztree使用的资源列表 + * @param: rid + * @date: 2019-08-17 12:28 PM + * @return: java.util.List> */ @Override public List> queryResourcesListWithSelected(Long rid) { @@ -115,9 +113,10 @@ public List> queryResourcesListWithSelected(Long rid) { } /** - * 获取资源的url和permission - * - * @return + * @description: 获取资源的url和permission + * @param: + * @date: 2019-08-17 12:29 PM + * @return: java.util.List */ @Override public List listUrlAndPermission() { @@ -126,9 +125,10 @@ public List listUrlAndPermission() { } /** - * 获取所有可用的菜单资源 - * - * @return + * @description: 获取所有可用的菜单资源 + * @param: + * @date: 2019-08-17 12:29 PM + * @return: java.util.List */ @Override public List listAllAvailableMenu() { @@ -137,15 +137,15 @@ public List listAllAvailableMenu() { } /** - * 获取父级资源下所有menu资源 - * - * @param pid - * @return + * @description: 获取父级资源下所有的menu资源 + * @param: pid + * @date: 2019-08-17 12:30 PM + * @return: java.util.List> */ @Override public List> listChildMenuByPid(Long pid) { List sysResources = resourceMapper.listMenuResourceByPid(pid); - if(CollectionUtils.isEmpty(sysResources)){ + if (CollectionUtils.isEmpty(sysResources)) { return null; } List> result = new LinkedList<>(); @@ -160,10 +160,10 @@ public List> listChildMenuByPid(Long pid) { } /** - * 获取用户关联的所有资源 - * - * @param userId - * @return + * @description: 获取用户关联的所有资源 + * @param: userId + * @date: 2019-08-17 12:31 PM + * @return: java.util.List */ @Override public List listByUserId(Long userId) { @@ -172,10 +172,10 @@ public List listByUserId(Long userId) { } /** - * 保存一个实体,null的属性不会保存,会使用数据库默认值 - * - * @param entity - * @return + * @description: 保存一个实体, null的属性不会保存(会使用数据库默认值) + * @param: entity + * @date: 2019-08-17 12:31 PM + * @return: com.zyd.shiro.business.entity.Resources */ @Override public Resources insert(Resources entity) { @@ -187,9 +187,10 @@ public Resources insert(Resources entity) { } /** - * 批量插入,支持批量插入的数据库可以使用,例如MySQL,H2等,另外该接口限制实体包含id属性并且必须为自增列 - * - * @param entities + * @description: 批量插入:支持批量插入的数据库可以使用,例如MySQL,H2等,另外该接口限制实体包含id属性并且必须为自增列 + * @param: entities + * @date: 2019-08-17 12:31 PM + * @return: void */ @Override public void insertList(List entities) { @@ -204,10 +205,10 @@ public void insertList(List entities) { } /** - * 根据主键字段进行删除,方法参数必须包含完整的主键属性 - * - * @param primaryKey - * @return + * @description: 根据主键字段进行删除, 方法参数必须包含完整的主键属性 + * @param: primaryKey + * @date: 2019-08-17 12:32 PM + * @return: boolean */ @Override public boolean removeByPrimaryKey(Long primaryKey) { @@ -215,10 +216,10 @@ public boolean removeByPrimaryKey(Long primaryKey) { } /** - * 根据主键更新实体全部字段,null值会被更新 - * - * @param entity - * @return + * @description: 根据主键更新实体全部字段(null值也会被更新) + * @param: entity + * @date: 2019-08-17 12:32 PM + * @return: boolean */ @Override public boolean update(Resources entity) { @@ -228,10 +229,10 @@ public boolean update(Resources entity) { } /** - * 根据主键更新属性不为null的值 - * - * @param entity - * @return + * @description: 根据主键更新属性不为null的值 + * @param: entity + * @date: 2019-08-17 12:33 PM + * @return: boolean */ @Override public boolean updateSelective(Resources entity) { @@ -241,10 +242,10 @@ public boolean updateSelective(Resources entity) { } /** - * 根据主键字段进行查询,方法参数必须包含完整的主键属性,查询条件使用等号 - * - * @param primaryKey - * @return + * @description: 根据主键字段进行查询, 方法参数必须包含完整的主键属性, 查询条件使用等号 + * @param: primaryKey + * @date: 2019-08-17 12:33 PM + * @return: com.zyd.shiro.business.entity.Resources */ @Override public Resources getByPrimaryKey(Long primaryKey) { @@ -254,10 +255,10 @@ public Resources getByPrimaryKey(Long primaryKey) { } /** - * 根据实体中的属性进行查询,只能有一个返回值,有多个结果时抛出异常,查询条件使用等号 - * - * @param entity - * @return + * @description: 根据实体中的属性进行查询, 只能有一个返回值, 有多个结果时抛出异常, 查询条件使用等号 + * @param: entity + * @date: 2019-08-17 12:34 PM + * @return: com.zyd.shiro.business.entity.Resources */ @Override public Resources getOneByEntity(Resources entity) { @@ -267,9 +268,10 @@ public Resources getOneByEntity(Resources entity) { } /** - * 查询全部结果,listByEntity(null)方法能达到同样的效果 - * - * @return + * @description: 查询全部结果, listByEntity(null)方法能达到同样的效果 + * @param: + * @date: 2019-08-17 12:34 PM + * @return: java.util.List */ @Override public List listAll() { @@ -278,10 +280,10 @@ public List listAll() { } /** - * 根据实体中的属性值进行查询,查询条件使用等号 - * - * @param entity - * @return + * @description: 根据实体中的属性值进行查询, 查询条件使用等号 + * @param: entity + * @date: 2019-08-17 12:34 PM + * @return: java.util.List */ @Override public List listByEntity(Resources entity) { @@ -290,6 +292,12 @@ public List listByEntity(Resources entity) { return getResources(sysResources); } + /** + * @description: 抽取所有系统资源信息 + * @param: sysResources + * @date: 2019-08-17 12:35 PM + * @return: java.util.List + */ private List getResources(List sysResources) { if (CollectionUtils.isEmpty(sysResources)) { return null; diff --git a/shiro-core/src/main/java/com/zyd/shiro/business/service/impl/SysRoleResourcesServiceImpl.java b/shiro-core/src/main/java/com/zyd/shiro/business/service/impl/SysRoleResourcesServiceImpl.java index a54dca6..ca5ff63 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/business/service/impl/SysRoleResourcesServiceImpl.java +++ b/shiro-core/src/main/java/com/zyd/shiro/business/service/impl/SysRoleResourcesServiceImpl.java @@ -37,24 +37,23 @@ import java.util.List; /** - * 角色资源 - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 1.0 - * @website https://www.zhyd.me - * @date 2018/4/16 16:26 - * @since 1.0 + * @project: springboot-shiro + * @description: 实现角色资源相关的业务处理 + * @date: 2019-08-17 12:55 AM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ @Service public class SysRoleResourcesServiceImpl implements SysRoleResourcesService { + @Autowired private SysRoleResourcesMapper resourceMapper; /** - * 保存一个实体,null的属性不会保存,会使用数据库默认值 - * - * @param entity - * @return + * @description: 保存一个实体, null的属性不会保存(使用数据库默认值) + * @param: entity + * @date: 2019-08-17 12:55 PM + * @return: com.zyd.shiro.business.entity.RoleResources */ @Override public RoleResources insert(RoleResources entity) { @@ -66,9 +65,10 @@ public RoleResources insert(RoleResources entity) { } /** - * 批量插入,支持批量插入的数据库可以使用,例如MySQL,H2等,另外该接口限制实体包含id属性并且必须为自增列 - * - * @param entities + * @description: 批量插入:支持批量插入的数据库可以使用,例如MySQL,H2等,另外该接口限制实体包含id属性并且必须为自增列 + * @param: entities + * @date: 2019-08-17 12:55 PM + * @return: void */ @Override public void insertList(List entities) { @@ -85,11 +85,12 @@ public void insertList(List entities) { resourceMapper.insertList(sysRoleResources); } + /** - * 根据主键字段进行删除,方法参数必须包含完整的主键属性 - * - * @param primaryKey - * @return + * @description: 根据主键字段进行删除, 方法参数必须包含完整的主键属性 + * @param: primaryKey + * @date: 2019-08-17 12:56 PM + * @return: boolean */ @Override public boolean removeByPrimaryKey(Long primaryKey) { @@ -97,10 +98,10 @@ public boolean removeByPrimaryKey(Long primaryKey) { } /** - * 根据主键更新实体全部字段,null值会被更新 - * - * @param entity - * @return + * @description: 根据主键更新实体全部字段(null值也会被更新) + * @param: entity + * @date: 2019-08-17 12:56 PM + * @return: boolean */ @Override public boolean update(RoleResources entity) { @@ -110,10 +111,10 @@ public boolean update(RoleResources entity) { } /** - * 根据主键更新属性不为null的值 - * - * @param entity - * @return + * @description: 根据主键更新属性不为null的值 + * @param: entity + * @date: 2019-08-17 12:57 PM + * @return: boolean */ @Override public boolean updateSelective(RoleResources entity) { @@ -123,10 +124,10 @@ public boolean updateSelective(RoleResources entity) { } /** - * 根据主键字段进行查询,方法参数必须包含完整的主键属性,查询条件使用等号 - * - * @param primaryKey - * @return + * @description: 根据主键字段进行查询, 方法参数必须包含完整的主键属性, 查询条件使用等号 + * @param: primaryKey + * @date: 2019-08-17 12:57 PM + * @return: com.zyd.shiro.business.entity.RoleResources */ @Override public RoleResources getByPrimaryKey(Long primaryKey) { @@ -136,10 +137,10 @@ public RoleResources getByPrimaryKey(Long primaryKey) { } /** - * 根据实体中的属性进行查询,只能有一个返回值,有多个结果时抛出异常,查询条件使用等号 - * - * @param entity - * @return + * @description: 根据实体中的属性进行查询, 只能有一个返回值, 有多个结果时抛出异常, 查询条件使用等号 + * @param: entity + * @date: 2019-08-17 12:58 PM + * @return: com.zyd.shiro.business.entity.RoleResources */ @Override public RoleResources getOneByEntity(RoleResources entity) { @@ -149,9 +150,10 @@ public RoleResources getOneByEntity(RoleResources entity) { } /** - * 查询全部结果,listByEntity(null)方法能达到同样的效果 - * - * @return + * @description: 查询全部结果, listByEntity(null)方法能达到同样的效果 + * @param: + * @date: 2019-08-17 12:58 PM + * @return: java.util.List */ @Override public List listAll() { @@ -160,10 +162,10 @@ public List listAll() { } /** - * 根据实体中的属性值进行查询,查询条件使用等号 - * - * @param entity - * @return + * @description: 根据实体中的属性值进行查询, 查询条件使用等号 + * @param: entity + * @date: 2019-08-17 12:58 PM + * @return: java.util.List */ @Override public List listByEntity(RoleResources entity) { @@ -172,23 +174,13 @@ public List listByEntity(RoleResources entity) { return getRoleResources(sysRoleResources); } - private List getRoleResources(List sysRoleResources) { - if (CollectionUtils.isEmpty(sysRoleResources)) { - return null; - } - List rr = new ArrayList<>(); - for (SysRoleResources r : sysRoleResources) { - rr.add(new RoleResources(r)); - } - return rr; - } /** - * 添加角色资源 - * 该节代码参考自http://blog.csdn.net/poorcoder_/article/details/71374002 - * - * @param roleId - * @param resourcesIds + * @description: 添加角色资源, 该节代码参考自: http://blog.csdn.net/poorcoder_/article/details/71374002 + * @param: roleId + * @param: resourcesIds + * @date: 2019-08-17 1:04 PM + * @return: void */ @Override @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) @@ -223,9 +215,10 @@ public void addRoleResources(Long roleId, String resourcesIds) { } /** - * 通过角色id批量删除 - * - * @param roleId + * @description: 通过角色id批量删除 + * @param: roleId + * @date: 2019-08-17 1:04 PM + * @return: void */ @Override @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) @@ -236,4 +229,21 @@ public void removeByRoleId(Long roleId) { criteria.andEqualTo("roleId", roleId); resourceMapper.deleteByExample(example); } + + /** + * @description: 抽取所有角色资源信息 + * @param: sysRoleResources + * @date: 2019-08-17 12:59 PM + * @return: java.util.List + */ + private List getRoleResources(List sysRoleResources) { + if (CollectionUtils.isEmpty(sysRoleResources)) { + return null; + } + List rr = new ArrayList<>(); + for (SysRoleResources r : sysRoleResources) { + rr.add(new RoleResources(r)); + } + return rr; + } } diff --git a/shiro-core/src/main/java/com/zyd/shiro/business/service/impl/SysRoleServiceImpl.java b/shiro-core/src/main/java/com/zyd/shiro/business/service/impl/SysRoleServiceImpl.java index 01b4c77..c0cfc83 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/business/service/impl/SysRoleServiceImpl.java +++ b/shiro-core/src/main/java/com/zyd/shiro/business/service/impl/SysRoleServiceImpl.java @@ -34,13 +34,11 @@ import java.util.*; /** - * 角色 - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 1.0 - * @website https://www.zhyd.me - * @date 2018/4/16 16:26 - * @since 1.0 + * @project: springboot-shiro + * @description: 实现角色相关的业务处理 + * @date: 2019-08-17 11:29 AM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ @Service public class SysRoleServiceImpl implements SysRoleService { @@ -49,10 +47,10 @@ public class SysRoleServiceImpl implements SysRoleService { private SysRoleMapper roleMapper; /** - * 获取ztree使用的角色列表 - * - * @param userId - * @return + * @description: 获取ztree使用的角色列表 + * @param: userId + * @date: 2019-08-17 11:30 AM + * @return: java.util.List> */ @Override public List> queryRoleListWithSelected(Integer userId) { @@ -74,10 +72,10 @@ public List> queryRoleListWithSelected(Integer userId) { } /** - * 分页查询 - * - * @param vo - * @return + * @description: 分页查询系统角色信息 + * @param: vo + * @date: 2019-08-17 11:30 AM + * @return: com.github.pagehelper.PageInfo */ @Override public PageInfo findPageBreakByCondition(RoleConditionVO vo) { @@ -96,10 +94,10 @@ public PageInfo findPageBreakByCondition(RoleConditionVO vo) { } /** - * 获取用户的角色 - * - * @param userId - * @return + * @description: 获取用户所拥有的角色信息 + * @param: userId + * @date: 2019-08-17 11:32 AM + * @return: java.util.List */ @Override public List listRolesByUserId(Long userId) { @@ -115,10 +113,10 @@ public List listRolesByUserId(Long userId) { } /** - * 保存一个实体,null的属性不会保存,会使用数据库默认值 - * - * @param entity - * @return + * @description: 保存一个实体, null的属性不会保存(会使用数据库默认值) + * @param: entity + * @date: 2019-08-17 11:33 AM + * @return: com.zyd.shiro.business.entity.Role */ @Override public Role insert(Role entity) { @@ -130,9 +128,10 @@ public Role insert(Role entity) { } /** - * 批量插入,支持批量插入的数据库可以使用,例如MySQL,H2等,另外该接口限制实体包含id属性并且必须为自增列 - * - * @param entities + * @description: 批量插入:支持批量插入的数据库可以使用,例如MySQL,H2等,另外该接口限制实体包含id属性并且必须为自增列 + * @param: entities + * @date: 2019-08-17 11:34 AM + * @return: void */ @Override public void insertList(List entities) { @@ -146,11 +145,11 @@ public void insertList(List entities) { roleMapper.insertList(sysRole); } - /** - * 根据主键字段进行删除,方法参数必须包含完整的主键属性 - * - * @param primaryKey - * @return + /*** + *@description: 根据主键字段进行删除, 方法参数必须包含完整的主键属性 + *@param: primaryKey + *@date: 2019-08-17 11:36 AM + *@return: boolean */ @Override public boolean removeByPrimaryKey(Long primaryKey) { @@ -158,10 +157,10 @@ public boolean removeByPrimaryKey(Long primaryKey) { } /** - * 根据主键更新实体全部字段,null值会被更新 - * - * @param entity - * @return + * @description: 根据主键更新实体全部字段, null值会被更新 + * @param: entity + * @date: 2019-08-17 11:36 AM + * @return: boolean */ @Override public boolean update(Role entity) { @@ -171,10 +170,10 @@ public boolean update(Role entity) { } /** - * 根据主键更新属性不为null的值 - * - * @param entity - * @return + * @description: 根据主键更新属性不为null的值 + * @param: entity + * @date: 2019-08-17 11:36 AM + * @return: boolean */ @Override public boolean updateSelective(Role entity) { @@ -184,10 +183,10 @@ public boolean updateSelective(Role entity) { } /** - * 根据主键字段进行查询,方法参数必须包含完整的主键属性,查询条件使用等号 - * - * @param primaryKey - * @return + * @description: 根据主键字段进行查询, 方法参数必须包含完整的主键属性, 查询条件使用等号 + * @param: primaryKey + * @date: 2019-08-17 11:37 AM + * @return: com.zyd.shiro.business.entity.Role */ @Override public Role getByPrimaryKey(Long primaryKey) { @@ -197,10 +196,10 @@ public Role getByPrimaryKey(Long primaryKey) { } /** - * 根据实体中的属性进行查询,只能有一个返回值,有多个结果时抛出异常,查询条件使用等号 - * - * @param entity - * @return + * @description: 根据实体中的属性进行查询, 只能有一个返回值, 有多个结果时抛出异常, 查询条件使用等号 + * @param: entity + * @date: 2019-08-17 11:37 AM + * @return: com.zyd.shiro.business.entity.Role */ @Override public Role getOneByEntity(Role entity) { @@ -210,9 +209,10 @@ public Role getOneByEntity(Role entity) { } /** - * 查询全部结果,listByEntity(null)方法能达到同样的效果 - * - * @return + * @description: 获取所有角色信息, listByEntity(null)方法能达到同样的效果 + * @param: + * @date: 2019-08-17 11:38 AM + * @return: java.util.List */ @Override public List listAll() { @@ -221,10 +221,10 @@ public List listAll() { } /** - * 根据实体中的属性值进行查询,查询条件使用等号 - * - * @param entity - * @return + * @description: 根据实体中的属性值进行查询, 查询条件使用等号 + * @param: entity + * @date: 2019-08-17 11:40 AM + * @return: java.util.List */ @Override public List listByEntity(Role entity) { @@ -233,6 +233,12 @@ public List listByEntity(Role entity) { return getRole(sysRole); } + /*** + *@description: 抽取所用角色信息 + *@param: sysRole + *@date: 2019-08-17 11:40 AM + *@return: java.util.List + */ private List getRole(List sysRole) { if (CollectionUtils.isEmpty(sysRole)) { return null; @@ -243,4 +249,5 @@ private List getRole(List sysRole) { } return roleList; } + } diff --git a/shiro-core/src/main/java/com/zyd/shiro/business/service/impl/SysUserRoleServiceImpl.java b/shiro-core/src/main/java/com/zyd/shiro/business/service/impl/SysUserRoleServiceImpl.java index 9a24443..892b212 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/business/service/impl/SysUserRoleServiceImpl.java +++ b/shiro-core/src/main/java/com/zyd/shiro/business/service/impl/SysUserRoleServiceImpl.java @@ -37,13 +37,11 @@ import java.util.List; /** - * 用户角色 - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 1.0 - * @website https://www.zhyd.me - * @date 2018/4/16 16:26 - * @since 1.0 + * @project: springboot-shiro + * @description: 实现用户角色相关的业务处理 + * @date: 2019-08-17 12:37 AM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ @Service public class SysUserRoleServiceImpl implements SysUserRoleService { @@ -52,10 +50,10 @@ public class SysUserRoleServiceImpl implements SysUserRoleService { private SysUserRoleMapper resourceMapper; /** - * 保存一个实体,null的属性不会保存,会使用数据库默认值 - * - * @param entity - * @return + * @description: 保存一个实体, null的属性不会保存(使用数据库默认值) + * @param: entity + * @date: 2019-08-17 12:37 PM + * @return: com.zyd.shiro.business.entity.UserRole */ @Override public UserRole insert(UserRole entity) { @@ -67,9 +65,10 @@ public UserRole insert(UserRole entity) { } /** - * 批量插入,支持批量插入的数据库可以使用,例如MySQL,H2等,另外该接口限制实体包含id属性并且必须为自增列 - * - * @param entities + * @description: 批量插入:支持批量插入的数据库可以使用, 例如MySQL, H2等, 另外该接口限制实体包含id属性并且必须为自增列 + * @param: entities + * @date: 2019-08-17 12:38 PM + * @return: void */ @Override public void insertList(List entities) { @@ -87,10 +86,10 @@ public void insertList(List entities) { } /** - * 根据主键字段进行删除,方法参数必须包含完整的主键属性 - * - * @param primaryKey - * @return + * @description: 根据主键字段进行删除, 方法参数必须包含完整的主键属性 + * *@param: primaryKey + * @date: 2019-08-17 12:38 PM + * @return: boolean */ @Override public boolean removeByPrimaryKey(Long primaryKey) { @@ -98,10 +97,10 @@ public boolean removeByPrimaryKey(Long primaryKey) { } /** - * 根据主键更新实体全部字段,null值会被更新 - * - * @param entity - * @return + * @description: 根据主键更新实体全部字段(null值也会被更新) + * @param: entity + * @date: 2019-08-17 12:38 PM + * @return: boolean */ @Override public boolean update(UserRole entity) { @@ -111,10 +110,10 @@ public boolean update(UserRole entity) { } /** - * 根据主键更新属性不为null的值 - * - * @param entity - * @return + * @description: 根据主键更新属性不为null的值 + * @param: entity + * @date: 2019-08-17 12:39 PM + * @return: boolean */ @Override public boolean updateSelective(UserRole entity) { @@ -124,10 +123,10 @@ public boolean updateSelective(UserRole entity) { } /** - * 根据主键字段进行查询,方法参数必须包含完整的主键属性,查询条件使用等号 - * - * @param primaryKey - * @return + * @description: 根据主键字段进行查询, 方法参数必须包含完整的主键属性, 查询条件使用等号 + * @param: primaryKey + * @date: 2019-08-17 12:40 PM + * @return: com.zyd.shiro.business.entity.UserRole */ @Override public UserRole getByPrimaryKey(Long primaryKey) { @@ -137,10 +136,10 @@ public UserRole getByPrimaryKey(Long primaryKey) { } /** - * 根据实体中的属性进行查询,只能有一个返回值,有多个结果时抛出异常,查询条件使用等号 - * - * @param entity - * @return + * @description: 根据实体中的属性进行查询, 只能有一个返回值, 有多个结果时抛出异常, 查询条件使用等号 + * @param: entity + * @date: 2019-08-17 12:40 PM + * @return: com.zyd.shiro.business.entity.UserRole */ @Override public UserRole getOneByEntity(UserRole entity) { @@ -150,9 +149,10 @@ public UserRole getOneByEntity(UserRole entity) { } /** - * 查询全部结果,listByEntity(null)方法能达到同样的效果 - * - * @return + * @description: 查询全部结果, listByEntity(null)方法能达到同样的效果 + * @param: + * @date: 2019-08-17 12:41 PM + * @return: java.util.List */ @Override public List listAll() { @@ -161,10 +161,10 @@ public List listAll() { } /** - * 根据实体中的属性值进行查询,查询条件使用等号 - * - * @param entity - * @return + * @description: 根据实体中的属性值进行查询, 查询条件使用等号 + * @param: entity + * @date: 2019-08-17 12:41 PM + * @return: java.util.List */ @Override public List listByEntity(UserRole entity) { @@ -173,23 +173,13 @@ public List listByEntity(UserRole entity) { return getUserRole(sysUserRole); } - private List getUserRole(List sysUserRole) { - if (CollectionUtils.isEmpty(sysUserRole)) { - return null; - } - List urList = new ArrayList<>(); - for (SysUserRole r : sysUserRole) { - urList.add(new UserRole(r)); - } - return urList; - } /** - * 添加用户角色 - * 该节代码参考自http://blog.csdn.net/poorcoder_/article/details/71374002 - * - * @param userId - * @param roleIds + * @description: 添加用户角色, 该节代码参考自: http://blog.csdn.net/poorcoder_/article/details/71374002 + * @param: userId + * @param: roleIds + * @date: 2019-08-17 12:44 PM + * @return: void */ @Override @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) @@ -216,9 +206,10 @@ public void addUserRole(Long userId, String roleIds) { } /** - * 根据用户ID删除用户角色 - * - * @param userId + * @description: 根据用户id删除指定的用户角色 + * @param: userId + * @date: 2019-08-17 12:45 PM + * @return: void */ @Override @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) @@ -228,4 +219,21 @@ public void removeByUserId(Long userId) { criteria.andEqualTo("userId", userId); resourceMapper.deleteByExample(example); } + + /** + * @description: 抽取所有的用户角色信息 + * @param: sysUserRole + * @date: 2019-08-17 12:42 PM + * @return: java.util.List + */ + private List getUserRole(List sysUserRole) { + if (CollectionUtils.isEmpty(sysUserRole)) { + return null; + } + List urList = new ArrayList<>(); + for (SysUserRole r : sysUserRole) { + urList.add(new UserRole(r)); + } + return urList; + } } diff --git a/shiro-core/src/main/java/com/zyd/shiro/business/service/impl/SysUserServiceImpl.java b/shiro-core/src/main/java/com/zyd/shiro/business/service/impl/SysUserServiceImpl.java index b0845e9..5892bfb 100644 --- a/shiro-core/src/main/java/com/zyd/shiro/business/service/impl/SysUserServiceImpl.java +++ b/shiro-core/src/main/java/com/zyd/shiro/business/service/impl/SysUserServiceImpl.java @@ -45,13 +45,11 @@ import java.util.List; /** - * 用户 - * - * @author yadong.zhang (yadong.zhang0415(a)gmail.com) - * @version 1.0 - * @website https://www.zhyd.me - * @date 2018/4/16 16:26 - * @since 1.0 + * @project: springboot-shiro + * @description: 实现用户相关的业务处理 + * @date: 2019-08-17 8:36 AM + * @version: 1.0 + * @website: https://yubuntu0109.github.io/ */ @Slf4j @Service @@ -61,8 +59,14 @@ public class SysUserServiceImpl implements SysUserService { private SysUserMapper sysUserMapper; @Autowired - private SysRoleService roleService; + private SysRoleService roleService; //never accessed + /** + * @description: 添加新用户信息 + * @param: user + * @date: 2019-08-17 8:38 AM + * @return: com.zyd.shiro.business.entity.User + */ @Override @Transactional(rollbackFor = Exception.class) public User insert(User user) { @@ -75,6 +79,12 @@ public User insert(User user) { return user; } + /** + * @description: 批量插入:支持批量插入的数据库可以使用, 例如MySQL, H2等. 另外该接口限制实体包含id属性并且必须为自增列 + * @param: users + * @date: 2019-08-17 8:45 AM + * @return: void + */ @Override @Transactional(rollbackFor = Exception.class) public void insertList(List users) { @@ -91,10 +101,10 @@ public void insertList(List users) { } /** - * 根据主键字段进行删除,方法参数必须包含完整的主键属性 - * - * @param primaryKey - * @return + * @description: 根据主键字段进行删除, 方法参数必须包含完整的主键属性 + * @param: primaryKey + * @date: 2019-08-17 9:01 AM + * @return: boolean */ @Override @Transactional(rollbackFor = Exception.class) @@ -102,6 +112,12 @@ public boolean removeByPrimaryKey(Long primaryKey) { return sysUserMapper.deleteByPrimaryKey(primaryKey) > 0; } + /** + * @description: 更新用户信息 + * @param: user + * @date: 2019-08-17 9:02 AM + * @return: boolean + */ @Override @Transactional(rollbackFor = Exception.class) public boolean update(User user) { @@ -117,6 +133,12 @@ public boolean update(User user) { return sysUserMapper.updateByPrimaryKey(user.getSysUser()) > 0; } + /** + * @description: 选择性地更新用户信息 + * @param: user + * @date: 2019-08-17 9:04 AM + * @return: boolean + */ @Override @Transactional(rollbackFor = Exception.class) public boolean updateSelective(User user) { @@ -136,12 +158,11 @@ public boolean updateSelective(User user) { } /** - * 根据主键字段进行查询,方法参数必须包含完整的主键属性,查询条件使用等号 - * - * @param primaryKey - * @return + * @description: 根据主键字段进行查询, 方法参数必须包含完整的主键属性, 查询条件使用等号 + * @param: primaryKey + * @date: 2019-08-17 9:08 AM + * @return: com.zyd.shiro.business.entity.User */ - @Override public User getByPrimaryKey(Long primaryKey) { Assert.notNull(primaryKey, "PrimaryKey不可为空!"); @@ -150,10 +171,10 @@ public User getByPrimaryKey(Long primaryKey) { } /** - * 根据实体中的属性进行查询,只能有一个返回值,有多个结果时抛出异常,查询条件使用等号 - * - * @param entity - * @return + * @description: 根据实体中的属性进行查询, 只能有一个返回值, 有多个结果时抛出异常, 查询条件使用等号 + * @param: entity + * @date: 2019-08-17 11:02 AM + * @return: com.zyd.shiro.business.entity.User */ @Override public User getOneByEntity(User entity) { @@ -162,10 +183,15 @@ public User getOneByEntity(User entity) { return null == sysUser ? null : new User(sysUser); } + /** + * @description: 获取所有用户列表 + * @param: + * @date: 2019-08-17 11:02 AM + * @return: java.util.List + */ @Override public List listAll() { List sysUsers = sysUserMapper.selectAll(); - if (CollectionUtils.isEmpty(sysUsers)) { return null; } @@ -176,6 +202,12 @@ public List listAll() { return users; } + /** + * @description: 根据实体中的属性值进行查询, 查询条件使用等号 + * @param: user + * @date: 2019-08-17 11:03 AM + * @return: java.util.List + */ @Override public List listByEntity(User user) { Assert.notNull(user, "User不可为空!"); @@ -191,10 +223,10 @@ public List listByEntity(User user) { } /** - * 分页查询 - * - * @param vo - * @return + * @description: 分页查询用户信息 + * @param: vo + * @date: 2019-08-17 11:05 AM + * @return: com.github.pagehelper.PageInfo */ @Override public PageInfo findPageBreakByCondition(UserConditionVO vo) { @@ -213,10 +245,10 @@ public PageInfo findPageBreakByCondition(UserConditionVO vo) { } /** - * 更新用户最后一次登录的状态信息 - * - * @param user - * @return + * @description: 更新用户最后一次登录的状态信息 + * @param: user + * @date: 2019-08-17 11:06 AM + * @return: com.zyd.shiro.business.entity.User */ @Override public User updateUserLastLoginInfo(User user) { @@ -231,10 +263,10 @@ public User updateUserLastLoginInfo(User user) { } /** - * 根据用户名查找 - * - * @param userName - * @return + * @description: 根据用户名获取指定的用户信息 + * @param: userName + * @date: 2019-08-17 11:08 AM + * @return: com.zyd.shiro.business.entity.User */ @Override public User getByUserName(String userName) { @@ -243,10 +275,10 @@ public User getByUserName(String userName) { } /** - * 通过角色Id获取用户列表 - * - * @param roleId - * @return + * @description: 通过角色id获取用户列表 + * @param: roleId + * @date: 2019-08-17 11:10 AM + * @return: java.util.List */ @Override public List listByRoleId(Long roleId) { From 0fc999a7ae4129928da34598dfa64129e64a2b64 Mon Sep 17 00:00:00 2001 From: HuangYuhui Date: Fri, 11 Oct 2019 16:37:31 +0800 Subject: [PATCH 23/27] :camera_flash: update the project screenshot --- docs/img/admin-resource.PNG | Bin 0 -> 178428 bytes docs/img/admin-resource.png | Bin 71803 -> 0 bytes docs/img/admin-role.PNG | Bin 0 -> 104525 bytes docs/img/admin-role.png | Bin 36303 -> 0 bytes docs/img/admin-user.PNG | Bin 0 -> 120673 bytes docs/img/admin-user.png | Bin 51151 -> 0 bytes docs/img/db-datasource.PNG | Bin 0 -> 172785 bytes docs/img/db-login.PNG | Bin 0 -> 42937 bytes docs/img/index.PNG | Bin 0 -> 137160 bytes docs/img/index.png | Bin 46799 -> 0 bytes docs/img/login.PNG | Bin 0 -> 70475 bytes docs/img/role-role[admin].PNG | Bin 0 -> 61488 bytes docs/img/root-resource.PNG | Bin 0 -> 206996 bytes docs/img/root-resource.png | Bin 82559 -> 0 bytes docs/img/root-role-[root].PNG | Bin 0 -> 188284 bytes docs/img/root-role.PNG | Bin 0 -> 118029 bytes docs/img/root-role.png | Bin 52170 -> 0 bytes docs/img/root-role[admin].png | Bin 27313 -> 0 bytes docs/img/root-role[root].png | Bin 26670 -> 0 bytes docs/img/root-user.PNG | Bin 0 -> 132317 bytes docs/img/root-user.png | Bin 56510 -> 0 bytes docs/img/root-user[role].png | Bin 62170 -> 0 bytes 22 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/img/admin-resource.PNG delete mode 100644 docs/img/admin-resource.png create mode 100644 docs/img/admin-role.PNG delete mode 100644 docs/img/admin-role.png create mode 100644 docs/img/admin-user.PNG delete mode 100644 docs/img/admin-user.png create mode 100644 docs/img/db-datasource.PNG create mode 100644 docs/img/db-login.PNG create mode 100644 docs/img/index.PNG delete mode 100644 docs/img/index.png create mode 100644 docs/img/login.PNG create mode 100644 docs/img/role-role[admin].PNG create mode 100644 docs/img/root-resource.PNG delete mode 100644 docs/img/root-resource.png create mode 100644 docs/img/root-role-[root].PNG create mode 100644 docs/img/root-role.PNG delete mode 100644 docs/img/root-role.png delete mode 100644 docs/img/root-role[admin].png delete mode 100644 docs/img/root-role[root].png create mode 100644 docs/img/root-user.PNG delete mode 100644 docs/img/root-user.png delete mode 100644 docs/img/root-user[role].png diff --git a/docs/img/admin-resource.PNG b/docs/img/admin-resource.PNG new file mode 100644 index 0000000000000000000000000000000000000000..05ccda29895edc2cbe9de2cf667b85773ed29177 GIT binary patch literal 178428 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

    xp%4qKXWhNr{roqY(-2AtbXp8 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 diff --git a/docs/img/admin-user.PNG b/docs/img/admin-user.PNG new file mode 100644 index 0000000000000000000000000000000000000000..49eeac12f68188a9cb3dd66331f783b776299ea2 GIT binary patch literal 120673 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͇DaWM2p*nTXcb)J|L{N5yi&@$hcOgKrWJ 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

    >NX2b#?=8BB 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

    klgM|Bt-|U>VKL%?d(7 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 literal 0 HcmV?d00001 diff --git a/docs/img/admin-resource.png b/docs/img/admin-resource.png deleted file mode 100644 index af0435451ab18a3c8425028306f19f52962c1e75..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 71803 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