Skip to content

Commit f74eab9

Browse files
committed
spring boot 集成 shiro mybatis 实现 rabc 的后台基本完成,页面后续补充
1 parent 4a16fcd commit f74eab9

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+3663
-0
lines changed

spring-boot-demo-parent/pom.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,10 @@
2525
<module>../spring-boot-demo-orm-mybatis</module>
2626
<module>../spring-boot-demo-cache-redis</module>
2727
<module>../spring-boot-demo-swagger</module>
28+
<module>../spring-boot-demo-rabc-shiro-mybatis</module>
2829
<module>../spring-boot-demo-ureport2</module>
2930
<module>../spring-boot-demo-war</module>
31+
<module>../spring-boot-demo-util</module>
3032
</modules>
3133

3234
<parent>
Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4+
<modelVersion>4.0.0</modelVersion>
5+
6+
<artifactId>spring-boot-demo-rabc-shiro-mybatis</artifactId>
7+
<version>0.0.1-SNAPSHOT</version>
8+
<packaging>jar</packaging>
9+
10+
<name>spring-boot-demo-rabc-shiro-mybatis</name>
11+
<description>Demo project for Spring Boot</description>
12+
13+
<parent>
14+
<groupId>com.xkcoding</groupId>
15+
<artifactId>spring-boot-demo-parent</artifactId>
16+
<version>0.0.1-SNAPSHOT</version>
17+
<relativePath>../spring-boot-demo-parent</relativePath>
18+
</parent>
19+
20+
<properties>
21+
<shiro.version>1.3.2</shiro.version>
22+
<shiro.redis.version>2.4.2.1-RELEASE</shiro.redis.version>
23+
<mybatis.starter.version>1.3.1</mybatis.starter.version>
24+
<druid.starter.version>1.1.5</druid.starter.version>
25+
<mapper.version>1.1.1</mapper.version>
26+
<pagehelper.version>1.1.0</pagehelper.version>
27+
28+
<!-- MyBatis Generator -->
29+
<!-- Java接口和实体类 -->
30+
<targetJavaProject>${basedir}/src/main/java</targetJavaProject>
31+
<targetMapperPackage>com.xkcoding.springbootdemorabcshiromybatis.dao</targetMapperPackage>
32+
<targetModelPackage>com.xkcoding.springbootdemorabcshiromybatis.model</targetModelPackage>
33+
<!-- XML生成路径 -->
34+
<targetResourcesProject>${basedir}/src/main/resources</targetResourcesProject>
35+
<targetXMLPackage>mapper</targetXMLPackage>
36+
<!-- 依赖版本 -->
37+
<mapper.generator.version>3.4.0</mapper.generator.version>
38+
<mysql.version>5.1.29</mysql.version>
39+
</properties>
40+
41+
<dependencies>
42+
<!--mybatis-->
43+
<dependency>
44+
<groupId>org.mybatis.spring.boot</groupId>
45+
<artifactId>mybatis-spring-boot-starter</artifactId>
46+
<version>${mybatis.starter.version}</version>
47+
</dependency>
48+
<!--druid-->
49+
<dependency>
50+
<groupId>com.alibaba</groupId>
51+
<artifactId>druid-spring-boot-starter</artifactId>
52+
<version>${druid.starter.version}</version>
53+
</dependency>
54+
<!--通用 Mapper-->
55+
<dependency>
56+
<groupId>tk.mybatis</groupId>
57+
<artifactId>mapper-spring-boot-starter</artifactId>
58+
<version>${mapper.version}</version>
59+
</dependency>
60+
<!--PageHelper-->
61+
<dependency>
62+
<groupId>com.github.pagehelper</groupId>
63+
<artifactId>pagehelper-spring-boot-starter</artifactId>
64+
<version>${pagehelper.version}</version>
65+
</dependency>
66+
<dependency>
67+
<groupId>org.apache.shiro</groupId>
68+
<artifactId>shiro-spring</artifactId>
69+
<version>${shiro.version}</version>
70+
</dependency>
71+
<dependency>
72+
<groupId>org.crazycake</groupId>
73+
<artifactId>shiro-redis</artifactId>
74+
<version>${shiro.redis.version}</version>
75+
</dependency>
76+
77+
<dependency>
78+
<groupId>com.xkcoding</groupId>
79+
<artifactId>spring-boot-demo-util</artifactId>
80+
<version>0.0.1-SNAPSHOT</version>
81+
<exclusions>
82+
<exclusion>
83+
<groupId>com.xiaoleilu</groupId>
84+
<artifactId>hutool-all</artifactId>
85+
</exclusion>
86+
</exclusions>
87+
</dependency>
88+
</dependencies>
89+
90+
<build>
91+
<plugins>
92+
<plugin>
93+
<groupId>org.mybatis.generator</groupId>
94+
<artifactId>mybatis-generator-maven-plugin</artifactId>
95+
<version>1.3.2</version>
96+
<configuration>
97+
<configurationFile>${basedir}/src/main/resources/generator/generatorConfig.xml</configurationFile>
98+
<overwrite>true</overwrite>
99+
<verbose>true</verbose>
100+
</configuration>
101+
<dependencies>
102+
<dependency>
103+
<groupId>mysql</groupId>
104+
<artifactId>mysql-connector-java</artifactId>
105+
<version>${mysql.version}</version>
106+
</dependency>
107+
<dependency>
108+
<groupId>tk.mybatis</groupId>
109+
<artifactId>mapper</artifactId>
110+
<version>${mapper.generator.version}</version>
111+
</dependency>
112+
</dependencies>
113+
</plugin>
114+
</plugins>
115+
<finalName>spring-boot-demo-rabc-shiro-mybatis</finalName>
116+
</build>
117+
118+
</project>
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.xkcoding.springbootdemorabcshiromybatis;
2+
3+
import lombok.extern.slf4j.Slf4j;
4+
import org.mybatis.spring.annotation.MapperScan;
5+
import org.springframework.boot.SpringApplication;
6+
import org.springframework.boot.autoconfigure.SpringBootApplication;
7+
8+
@SpringBootApplication
9+
@MapperScan(basePackages = {"com.xkcoding.springbootdemorabcshiromybatis.dao"})
10+
@Slf4j
11+
public class SpringBootDemoRabcShiroMybatisApplication {
12+
13+
public static void main(String[] args) {
14+
SpringApplication.run(SpringBootDemoRabcShiroMybatisApplication.class, args);
15+
log.info("SpringBootDemoRabcShiroMybatisApplication 启动成功。。。。");
16+
}
17+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package com.xkcoding.springbootdemorabcshiromybatis.config;
2+
3+
import lombok.extern.slf4j.Slf4j;
4+
import org.springframework.boot.CommandLineRunner;
5+
import org.springframework.stereotype.Component;
6+
7+
/**
8+
* <p>
9+
* 数据初始化,实现 CommandLineRunner 接口,启动 springboot 后自动执行,如果有多个这个类可以根据 @Order 来指定执行顺序
10+
* </p>
11+
*
12+
* @package: com.xkcoding.springbootdemorabcshiromybatis
13+
* @description: 数据初始化
14+
* @author: yangkai.shen
15+
* @date: Created in 2017/11/29 下午4:32
16+
* @copyright: Copyright (c) 2017
17+
* @version: 0.0.1
18+
* @modified: yangkai.shen
19+
*/
20+
@Component
21+
@Slf4j
22+
public class DBInitConfig implements CommandLineRunner {
23+
24+
@Override
25+
public void run(String... strings) throws Exception {
26+
log.info("正在初始化数据。。。");
27+
log.info("数据初始化完成。。。");
28+
}
29+
30+
}
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
package com.xkcoding.springbootdemorabcshiromybatis.config;
2+
3+
import com.google.common.collect.Maps;
4+
import com.xkcoding.springbootdemorabcshiromybatis.shiro.MyShiroRealm;
5+
import lombok.extern.slf4j.Slf4j;
6+
import org.apache.shiro.mgt.DefaultSecurityManager;
7+
import org.apache.shiro.mgt.SecurityManager;
8+
import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
9+
import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
10+
import org.springframework.context.annotation.Bean;
11+
import org.springframework.context.annotation.Configuration;
12+
13+
import java.util.Map;
14+
15+
/**
16+
* Shiro 配置
17+
*
18+
* @package: com.xkcoding.springbootdemorabcshiromybatis.config
19+
* @description: Shiro 配置
20+
* @author: yangkai.shen
21+
* @date: Created in 2017/11/29 下午3:24
22+
* @copyright: Copyright (c) 2017
23+
* @version: 0.0.1
24+
* @modified: yangkai.shen
25+
*/
26+
@Configuration
27+
@Slf4j
28+
public class ShiroConfig {
29+
30+
@Bean
31+
public ShiroFilterFactoryBean shiroFilter(SecurityManager securityManager) {
32+
ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
33+
// 必须设置 securityManager
34+
shiroFilterFactoryBean.setSecurityManager(securityManager);
35+
36+
// 设置登录页面,默认是 Web 工程目录下的"/login.jsp"
37+
shiroFilterFactoryBean.setLoginUrl("/login");
38+
// 设置登陆成功后的页面
39+
shiroFilterFactoryBean.setSuccessUrl("/index");
40+
// 设置未授权页面
41+
shiroFilterFactoryBean.setUnauthorizedUrl("/403");
42+
43+
// 配置拦截器链,注意配置的顺序,很关键
44+
// 过滤链定义,从上向下顺序执行,一般将 /**放在最为下边
45+
// authc:所有url都必须认证通过才可以访问; anon:所有url都都可以匿名访问
46+
Map<String, String> filterChainDefinitionMap = Maps.newLinkedHashMap();
47+
// 配置可以被匿名访问的地址
48+
filterChainDefinitionMap.put("/static/**", "anon");
49+
filterChainDefinitionMap.put("/ajaxLogin", "anon");
50+
// 配置 logout,登出部分逻辑由 shiro 为我们实现
51+
filterChainDefinitionMap.put("/logout", "logout");
52+
// 配置自定义权限
53+
filterChainDefinitionMap.put("/add", "perms[权限添加]");
54+
filterChainDefinitionMap.put("/**", "authc");
55+
56+
shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap);
57+
log.info("ShiroFilterFactoryBean 注入成功");
58+
59+
return shiroFilterFactoryBean;
60+
}
61+
62+
@Bean
63+
public SecurityManager securityManager(MyShiroRealm myShiroRealm) {
64+
DefaultWebSecurityManager defaultSecurityManager = new DefaultWebSecurityManager();
65+
// 设置 Realm
66+
// 在 shiro 中,最终是通过 Realm 来获取应用程序中的用户、角色及权限信息的。
67+
// 通常情况下,在 Realm 中会直接从我们的数据源中获取 shiro 需要的验证信息。
68+
// 可以说,Realm 是专用于安全框架的 DAO。
69+
defaultSecurityManager.setRealm(myShiroRealm);
70+
71+
return defaultSecurityManager;
72+
}
73+
74+
@Bean
75+
public MyShiroRealm myShiroRealm() {
76+
return new MyShiroRealm();
77+
}
78+
}
Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
package com.xkcoding.springbootdemorabcshiromybatis.constrant.factory;
2+
3+
import java.util.List;
4+
5+
/**
6+
* <p>
7+
* 常量生产工厂的接口
8+
* </p>
9+
*
10+
* @package: com.xkcoding.springbootdemorabcshiromybatis.constrant.factory
11+
* @description: 常量生产工厂的接口
12+
* @author: yangkai.shen
13+
* @date: Created in 2017/12/6 下午3:51
14+
* @copyright: Copyright (c) 2017
15+
* @version: 0.0.1
16+
* @modified: yangkai.shen
17+
*/
18+
public interface Constant {
19+
20+
String ADMIN_NAME = "超级管理员";
21+
22+
String COMMA = ",";
23+
String SEMI = ";";
24+
String SEPARATE = "|";
25+
String PATH_SEPARATE = "/";
26+
String PERCENT = "%";
27+
28+
/**
29+
* 根据用户id获取用户名称
30+
*
31+
* @param userId 用户id
32+
* @return 用户名称
33+
*/
34+
String getRealNameById(Integer userId);
35+
36+
/**
37+
* 根据用户id获取用户账号
38+
*
39+
* @param userId 用户id
40+
* @return 用户账号
41+
*/
42+
String getUsernameById(Integer userId);
43+
44+
/**
45+
* 根据角色id获取角色名称
46+
*
47+
* @param roleId 角色id
48+
* @return 角色名称
49+
*/
50+
String getRoleName(Integer roleId);
51+
52+
/**
53+
* 根据角色id列表获取角色名称列表
54+
*
55+
* @param roleIds 角色id列表
56+
* @return 角色名称列表
57+
*/
58+
List<String> getRoleNames(List<Integer> roleIds);
59+
60+
/**
61+
* 根据用户id获取角色id列表
62+
*
63+
* @param userId 用户id
64+
* @return 角色id列表
65+
*/
66+
List<Integer> getRoleIds(Integer userId);
67+
68+
/**
69+
* 根据部门id获取部门名称
70+
*
71+
* @param deptId 部门id
72+
* @return 部门名称
73+
*/
74+
String getDeptName(Integer deptId);
75+
76+
/**
77+
* 根据权限id获取权限名称
78+
*
79+
* @param aclId 权限id
80+
* @return 权限名称
81+
*/
82+
String getAclName(Integer aclId);
83+
84+
/**
85+
* 根据权限编号获取权限名称
86+
*
87+
* @param code 权限编号
88+
* @return 权限名称
89+
*/
90+
String getAclNameByCode(String code);
91+
92+
/**
93+
* 根据状态码获取用户登录状态
94+
*
95+
* @param code 状态码
96+
* @return 状态
97+
*/
98+
String getUserStatusName(Integer code);
99+
100+
/**
101+
* 根据状态码获取权限状态
102+
*
103+
* @param code 状态码
104+
* @return 状态
105+
*/
106+
String getAclStatusName(Integer code);
107+
108+
/**
109+
* 获取子部门id
110+
*
111+
* @param deptId 当前部门id
112+
* @return 所有子部门id
113+
*/
114+
List<Integer> getSubDeptId(Integer deptId);
115+
116+
/**
117+
* 获取所有父部门id
118+
*
119+
* @param deptId 当前部门id
120+
* @return 所有父部门id
121+
*/
122+
List<Integer> getParentDeptIds(Integer deptId);
123+
124+
}

0 commit comments

Comments
 (0)