Spring+shiro+mybatis+lombok项目部署

owofile Lv5

Spring+shiro+mybatis+lombok项目部署

项目介绍

本项目是maven项目

数据库mysql

前端html+jquery+md5+wangEditor+cancas 框架:bootstrap

后端spring+mybatis+shiro+lombok

笔记配套项目:

配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
spring:
datasource:
url: jdbc:mysql://localhost:3306/finance?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC&zeroDateTimeBehavior=convertToNull
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
druid:
initial-size: 5
min-idle: 5
max-active: 20
max-wait: 60000
time-between-eviction-runs-millis: 60000
min-evictable-idle-time-millis: 300000
validation-query: SELECT 1 FROM DUAL
test-while-idle: true
test-on-borrow: false
test-on-return: false
pool-prepared-statements: true
max-pool-prepared-statement-per-connection-size: 20
filters: stat,wall
use-global-data-source-stat: true
connect-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
web:
resources:
static-locations: classpath:/static/
mybatis:
mapper-locations: classpath:mapper/\*.xml
type-aliases-package: com.crazy.finance.bean
configuration:
map-underscore-to-camel-case: true #将下换线转成驼峰式
# configuration:
# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
server:
port: 8099

返回类JsonUtils

在tuils里的JsonUtils类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
package com.example.finance.utils;
import lombok.Data;
import java.util.HashMap;
import java.util.Map;
/\*\*
\* 通用的返回类(封装json数据)
\*
\*/
@Data
public class JsonUtils {
// 状态码 100-成功 200-失败
private int code;
// 提示信息
private String msg;
// 用户要返回给浏览器的数据
private Map<String, Object> extend = new HashMap();
/\*\*
\* 处理成功
\*
\* @return
\*/
public static JsonUtils success() {
JsonUtils result = new JsonUtils();
result.setCode(100);
result.setMsg("处理成功!");
return result;
}
/\*\*
\* 处理失败
\*
\* @return
\*/
public static JsonUtils fail() {
JsonUtils result = new JsonUtils();
result.setCode(200);
result.setMsg("处理失败!");
return result;
}
public static JsonUtils failPs() {
JsonUtils result = new JsonUtils();
result.setCode(300);
result.setMsg("处理失败!");
return result;
}
public static JsonUtils failEx() {
JsonUtils result = new JsonUtils();
result.setCode(400);
result.setMsg("处理失败!");
return result;
}
public static JsonUtils failNu() {
JsonUtils result = new JsonUtils();
result.setCode(500);
result.setMsg("处理失败!");
return result;
}
/\*\*
\* 添加要返回的json数据
\*
\* @param key
\* @param value
\* @return
\*/
public JsonUtils add(String key, Object value) {
this.getExtend().put(key, value);
return this;
}
}

Config

一些配置类

分别是ShiroConfig类

用来自动实现权限分配

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package com.example.finance.config.shiro;
import at.pollux.thymeleaf.shiro.dialect.ShiroDialect;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.LinkedHashMap;
import java.util.Map;
@Slf4j
@Configuration
public class ShiroConfig {
@Bean
public ShiroFilterFactoryBean getShiroFilterFactoryBean(@Qualifier("securityManager") DefaultWebSecurityManager securityManager){
ShiroFilterFactoryBean bean = new ShiroFilterFactoryBean();
bean.setSecurityManager(securityManager);
//一定要用LinkedHashMap。不然会导致规则混乱
Map<String, String> filterMap = new LinkedHashMap();
// log.info("ShiroFilterFactoryBean-------------------------------");
//添加shiro的内置过滤器
/\*
anon: 无需认证就可访问
authc:必须认证才能访问
user:必须拥有记住我功能才能访问
perms: 拥有对某个资源的权限才能访问
role:拥有某个角色权限才能访问
\*/
// 添加授权
// filterMap.put("/user/\*\*", "roles[user]");
// filterMap.put("/admin/\*\*", "roles[admin]");
// 过滤请求
filterMap.put("/error/\*\*", "anon");
filterMap.put("/", "anon");
filterMap.put("/index.html", "anon");
filterMap.put("/toregister.html", "anon");
filterMap.put("/login/\*\*", "anon");
filterMap.put("/asserts/\*\*", "anon");
filterMap.put("/bootstrap/\*\*", "anon");
filterMap.put("/images/\*\*", "anon");
filterMap.put("/lyear/\*\*", "anon");
filterMap.put("/js/\*\*", "anon");
// 对所有请求认证
// 主要这行代码必须放在所有权限设置的最后,不然会导致所有 url 都被拦截
filterMap.put("/\*\*", "authc");
// 设置登出
// filterMap.put("/logout", "logout");
bean.setFilterChainDefinitionMap(filterMap);
// 设置登录请求(认证界面)
bean.setLoginUrl("/");
// 设置未授权页面
// bean.setUnauthorizedUrl("/noauth");
return bean;
}
@Bean("securityManager")
public DefaultWebSecurityManager getDefaultWebSecurityManager(@Qualifier("userRealm") UserRealm userRealm) {
DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
securityManager.setRealm(userRealm);
return securityManager;
}
@Bean("userRealm")
public UserRealm getUserRealm() {
return new UserRealm();
}
//整合thymeleaf
@Bean
public ShiroDialect getShiroDialect() {
return new ShiroDialect();
}
}
  • Title: Spring+shiro+mybatis+lombok项目部署
  • Author: owofile
  • Created at : 2024-01-25 12:07:51
  • Updated at : 2025-04-11 21:18:26
  • Link: https://owofile.github.io/blog/2024/01/25/Spring-shiro-mybatis-lombok项目部署/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments