正在显示
31 个修改的文件
包含
786 行增加
和
591 行删除
@@ -23,7 +23,7 @@ spring: | @@ -23,7 +23,7 @@ spring: | ||
23 | static-locations: classpath:/META-INF/resources/,classpath:/static,classpath:/resources/,file:${web.upload-path} | 23 | static-locations: classpath:/META-INF/resources/,classpath:/static,classpath:/resources/,file:${web.upload-path} |
24 | 24 | ||
25 | application: | 25 | application: |
26 | - name: cloud-user-center | 26 | + name: cloud-kako-user-center |
27 | redis: | 27 | redis: |
28 | # host: 127.0.0.1 | 28 | # host: 127.0.0.1 |
29 | host: 192.168.1.53 | 29 | host: 192.168.1.53 |
@@ -57,7 +57,7 @@ spring: | @@ -57,7 +57,7 @@ spring: | ||
57 | #username=CGOETL | 57 | #username=CGOETL |
58 | #password=1q2w3e4r | 58 | #password=1q2w3e4r |
59 | #spring datasource mysql,注意编码配置,缺少数据库编码配置容易引起中文入库乱码 | 59 | #spring datasource mysql,注意编码配置,缺少数据库编码配置容易引起中文入库乱码 |
60 | - url: jdbc:mysql://118.31.66.166:3306/statistics?useUnicode=true&characterEncoding=utf8 | 60 | + url: jdbc:mysql://118.31.66.166:3306/station?useUnicode=true&characterEncoding=utf8 |
61 | username: 110 | 61 | username: 110 |
62 | password: QAHqCJf2kFYCLirM | 62 | password: QAHqCJf2kFYCLirM |
63 | driver-class-name: com.mysql.cj.jdbc.Driver | 63 | driver-class-name: com.mysql.cj.jdbc.Driver |
@@ -4,7 +4,7 @@ | @@ -4,7 +4,7 @@ | ||
4 | <!-- scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true --> | 4 | <!-- scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true --> |
5 | <!-- scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 --> | 5 | <!-- scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 --> |
6 | <!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 --> | 6 | <!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 --> |
7 | -<configuration scan="true" scanPeriod="10 seconds"> | 7 | +<configuration scan="true" scanPeriod="60 seconds"> |
8 | 8 | ||
9 | <!--<include resource="org/springframework/boot/logging/logback/base.xml" />--> | 9 | <!--<include resource="org/springframework/boot/logging/logback/base.xml" />--> |
10 | 10 | ||
@@ -25,7 +25,7 @@ | @@ -25,7 +25,7 @@ | ||
25 | <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> | 25 | <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> |
26 | <!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息--> | 26 | <!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息--> |
27 | <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> | 27 | <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> |
28 | - <level>info</level> | 28 | + <level>debug</level> |
29 | </filter> | 29 | </filter> |
30 | <encoder> | 30 | <encoder> |
31 | <Pattern>${CONSOLE_LOG_PATTERN}</Pattern> | 31 | <Pattern>${CONSOLE_LOG_PATTERN}</Pattern> |
@@ -169,7 +169,7 @@ | @@ -169,7 +169,7 @@ | ||
169 | 不能设置为INHERITED或者同义词NULL。默认是DEBUG | 169 | 不能设置为INHERITED或者同义词NULL。默认是DEBUG |
170 | 可以包含零个或多个元素,标识这个appender将会添加到这个logger。 | 170 | 可以包含零个或多个元素,标识这个appender将会添加到这个logger。 |
171 | --> | 171 | --> |
172 | - <logger name="com.tianbo.warehouse.dao" level="info" /> | 172 | + <logger name="com.tianbo.warehouse.dao" level="debug" /> |
173 | <!--开发环境:打印控制台--> | 173 | <!--开发环境:打印控制台--> |
174 | <springProfile name="dev"> | 174 | <springProfile name="dev"> |
175 | <logger name="org.springframework.security" level="debug"/> | 175 | <logger name="org.springframework.security" level="debug"/> |
@@ -21,6 +21,7 @@ | @@ -21,6 +21,7 @@ | ||
21 | <fastjson_version>1.2.28</fastjson_version> | 21 | <fastjson_version>1.2.28</fastjson_version> |
22 | <lombok_sersion>1.18.6</lombok_sersion> | 22 | <lombok_sersion>1.18.6</lombok_sersion> |
23 | <swagger2_version>2.9.2</swagger2_version> | 23 | <swagger2_version>2.9.2</swagger2_version> |
24 | + <shiro.version>1.2.5</shiro.version> | ||
24 | </properties> | 25 | </properties> |
25 | 26 | ||
26 | <dependencies> | 27 | <dependencies> |
@@ -205,10 +206,10 @@ | @@ -205,10 +206,10 @@ | ||
205 | <groupId>org.springframework.boot</groupId> | 206 | <groupId>org.springframework.boot</groupId> |
206 | <artifactId>spring-boot-starter-data-redis</artifactId> | 207 | <artifactId>spring-boot-starter-data-redis</artifactId> |
207 | </dependency> | 208 | </dependency> |
208 | - <dependency> | ||
209 | - <groupId>org.springframework.cloud</groupId> | ||
210 | - <artifactId>spring-cloud-starter-zipkin</artifactId> | ||
211 | - </dependency> | 209 | +<!-- <dependency>--> |
210 | +<!-- <groupId>org.springframework.cloud</groupId>--> | ||
211 | +<!-- <artifactId>spring-cloud-starter-zipkin</artifactId>--> | ||
212 | +<!-- </dependency>--> | ||
212 | 213 | ||
213 | <dependency> | 214 | <dependency> |
214 | <groupId>de.codecentric</groupId> | 215 | <groupId>de.codecentric</groupId> |
@@ -220,6 +221,12 @@ | @@ -220,6 +221,12 @@ | ||
220 | <artifactId>spring-boot-starter-actuator</artifactId> | 221 | <artifactId>spring-boot-starter-actuator</artifactId> |
221 | </dependency> | 222 | </dependency> |
222 | 223 | ||
224 | + <!-- 兼容卡口登录插件需要用shiro--> | ||
225 | + <dependency> | ||
226 | + <groupId>org.apache.shiro</groupId> | ||
227 | + <artifactId>shiro-core</artifactId> | ||
228 | + <version>${shiro.version}</version> | ||
229 | + </dependency> | ||
223 | </dependencies> | 230 | </dependencies> |
224 | 231 | ||
225 | <dependencyManagement> | 232 | <dependencyManagement> |
@@ -5,6 +5,7 @@ import com.github.pagehelper.PageInfo; | @@ -5,6 +5,7 @@ import com.github.pagehelper.PageInfo; | ||
5 | import com.tianbo.warehouse.annotation.LogAnnotation; | 5 | import com.tianbo.warehouse.annotation.LogAnnotation; |
6 | import com.tianbo.warehouse.annotation.RequestRequire; | 6 | import com.tianbo.warehouse.annotation.RequestRequire; |
7 | import com.tianbo.warehouse.annotation.UserPasswordMd5; | 7 | import com.tianbo.warehouse.annotation.UserPasswordMd5; |
8 | +import com.tianbo.warehouse.annotation.cache.annotation.RedisCacheDelTarget; | ||
8 | import com.tianbo.warehouse.controller.response.ResultJson; | 9 | import com.tianbo.warehouse.controller.response.ResultJson; |
9 | import com.tianbo.warehouse.model.USERS; | 10 | import com.tianbo.warehouse.model.USERS; |
10 | import com.tianbo.warehouse.model.UserRole; | 11 | import com.tianbo.warehouse.model.UserRole; |
@@ -74,6 +75,7 @@ public class UserController { | @@ -74,6 +75,7 @@ public class UserController { | ||
74 | @LogAnnotation(moduleName = "用户管理",operate = "用户编辑") | 75 | @LogAnnotation(moduleName = "用户管理",operate = "用户编辑") |
75 | @PutMapping("/edit") | 76 | @PutMapping("/edit") |
76 | public ResultJson updateUserById(@Validated(UpdateUser.class) @RequestBody USERS user){ | 77 | public ResultJson updateUserById(@Validated(UpdateUser.class) @RequestBody USERS user){ |
78 | + user.setPassword(null); | ||
77 | int i = userService.updateByPrimaryKeySelective(user); | 79 | int i = userService.updateByPrimaryKeySelective(user); |
78 | ResultJson resultJson = new ResultJson(); | 80 | ResultJson resultJson = new ResultJson(); |
79 | return i==1 ? new ResultJson("200","success") :new ResultJson("500","update faild"); | 81 | return i==1 ? new ResultJson("200","success") :new ResultJson("500","update faild"); |
@@ -127,6 +129,7 @@ public class UserController { | @@ -127,6 +129,7 @@ public class UserController { | ||
127 | * 刷新redis权限缓存 | 129 | * 刷新redis权限缓存 |
128 | */ | 130 | */ |
129 | @ApiOperation(value = "更新用户权限缓存", notes = "重新生成用户的信息到redis") | 131 | @ApiOperation(value = "更新用户权限缓存", notes = "重新生成用户的信息到redis") |
132 | + @RedisCacheDelTarget(cacheKey = "com.tianbo.warehouse.service.imp.PermissionServiceImp") | ||
130 | @PutMapping("/resetToken") | 133 | @PutMapping("/resetToken") |
131 | public ResultJson resetToken(HttpServletRequest request,HttpServletResponse respons) { | 134 | public ResultJson resetToken(HttpServletRequest request,HttpServletResponse respons) { |
132 | /** | 135 | /** |
1 | -package com.tianbo.warehouse.controller.staff; | ||
2 | - | ||
3 | - | ||
4 | -import com.github.pagehelper.PageInfo; | ||
5 | -import com.tianbo.warehouse.annotation.LogAnnotation; | ||
6 | -import com.tianbo.warehouse.controller.response.ResultJson; | ||
7 | -import com.tianbo.warehouse.model.StaffApartmentComeCar; | ||
8 | -import com.tianbo.warehouse.model.StaffApartmentMaintain; | ||
9 | -import com.tianbo.warehouse.service.satff.ComeCarService; | ||
10 | -import com.tianbo.warehouse.service.satff.MaintainService; | ||
11 | -import org.springframework.beans.factory.annotation.Autowired; | ||
12 | -import org.springframework.web.bind.annotation.*; | ||
13 | - | ||
14 | -import javax.servlet.http.HttpServletRequest; | ||
15 | -import javax.servlet.http.HttpServletResponse; | ||
16 | -import javax.validation.Valid; | ||
17 | - | ||
18 | -@RestController | ||
19 | -@RequestMapping("/come_car") | ||
20 | -public class ComeCarController { | ||
21 | - | ||
22 | - @Autowired | ||
23 | - ComeCarService comeCarService; | ||
24 | - | ||
25 | - @GetMapping("/list") | ||
26 | - public PageInfo<StaffApartmentComeCar> list(@RequestParam(value = "pageNum",required = false,defaultValue = "1") | ||
27 | - int pageNum, | ||
28 | - @RequestParam(value = "pageSize",required = false,defaultValue = "5") | ||
29 | - int pageSize, | ||
30 | - @RequestParam(value = "cometovisitname", required = false) | ||
31 | - String comeToVisitName){ | ||
32 | - return comeCarService.findAll(pageNum,pageSize,comeToVisitName); | ||
33 | - | ||
34 | - } | ||
35 | - | ||
36 | - @LogAnnotation(moduleName = "职工公寓人员,车辆来访登记",operate = "职工公寓人员,车辆来访登记添加") | ||
37 | - @PostMapping("/add") | ||
38 | - public ResultJson add(@RequestBody StaffApartmentComeCar staffApartmentComeCar){ | ||
39 | - | ||
40 | - int i =comeCarService.insertSelective(staffApartmentComeCar); | ||
41 | - | ||
42 | - ResultJson resultJson = new ResultJson(); | ||
43 | - if (1==i){ | ||
44 | - resultJson = new ResultJson("200","添加成功"); | ||
45 | - }else { | ||
46 | - resultJson = new ResultJson("500","insert faild"); | ||
47 | - } | ||
48 | - return resultJson; | ||
49 | - } | ||
50 | - | ||
51 | - @LogAnnotation(moduleName = "职工公寓人员,车辆来访登记",operate = "职工公寓人员,车辆来访登记修改") | ||
52 | - @PutMapping("/edit") | ||
53 | - @ResponseBody | ||
54 | - public ResultJson edit(@RequestBody @Valid StaffApartmentComeCar staffApartmentComeCar){ | ||
55 | - | ||
56 | - int i =comeCarService.updateByPrimaryKeySelective(staffApartmentComeCar); | ||
57 | - | ||
58 | - ResultJson resultJson = new ResultJson(); | ||
59 | - if (1==i){ | ||
60 | - resultJson = new ResultJson("200","修改成功"); | ||
61 | - }else { | ||
62 | - resultJson = new ResultJson("500","insert faild"); | ||
63 | - } | ||
64 | - return resultJson; | ||
65 | - } | ||
66 | - | ||
67 | - @LogAnnotation(moduleName = "职工公寓人员,车辆来访登记",operate = "职工公寓人员,车辆来访登记删除") | ||
68 | - @DeleteMapping("/del") | ||
69 | - public ResultJson reomve(@RequestBody StaffApartmentComeCar staffApartmentComeCar, HttpServletRequest request, HttpServletResponse response){ | ||
70 | - | ||
71 | - int i =comeCarService.deleteByPrimaryKey(staffApartmentComeCar.getId()); | ||
72 | - | ||
73 | - ResultJson resultJson = new ResultJson(); | ||
74 | - if (1==i){ | ||
75 | - resultJson = new ResultJson("200","删除成功"); | ||
76 | - }else { | ||
77 | - resultJson = new ResultJson("500","insert faild"); | ||
78 | - } | ||
79 | - return resultJson; | ||
80 | - } | ||
81 | - | ||
82 | - @LogAnnotation(moduleName = "职工公寓人员,车辆来访登记",operate = "职工公寓人员,车辆来访登记删除") | ||
83 | - @GetMapping("/batchremove") | ||
84 | - public ResultJson reomve(String ids, HttpServletRequest request, HttpServletResponse response){ | ||
85 | - | ||
86 | - ResultJson resultJson = new ResultJson(); | ||
87 | - | ||
88 | - if (comeCarService.deleteByPrimaryKey(ids)>0){ | ||
89 | - resultJson = new ResultJson("200","删除成功"); | ||
90 | - }else { | ||
91 | - resultJson = new ResultJson("500","insert faild"); | ||
92 | - } | ||
93 | - return resultJson; | ||
94 | - } | ||
95 | - | ||
96 | -} |
1 | -package com.tianbo.warehouse.controller.staff; | ||
2 | - | ||
3 | - | ||
4 | -import com.github.pagehelper.PageInfo; | ||
5 | -import com.tianbo.warehouse.annotation.LogAnnotation; | ||
6 | -import com.tianbo.warehouse.controller.response.ResultJson; | ||
7 | -import com.tianbo.warehouse.model.StaffApartmentSpareKey; | ||
8 | -import com.tianbo.warehouse.model.StaffSecurityInspection; | ||
9 | -import com.tianbo.warehouse.service.satff.KeyService; | ||
10 | -import com.tianbo.warehouse.service.satff.StaffSecurityInspectionService; | ||
11 | -import org.springframework.beans.factory.annotation.Autowired; | ||
12 | -import org.springframework.web.bind.annotation.*; | ||
13 | - | ||
14 | -import javax.servlet.http.HttpServletRequest; | ||
15 | -import javax.servlet.http.HttpServletResponse; | ||
16 | -import javax.validation.Valid; | ||
17 | - | ||
18 | -@RestController | ||
19 | -@RequestMapping("/key") | ||
20 | -public class KeyController { | ||
21 | - | ||
22 | - @Autowired | ||
23 | - KeyService keyService; | ||
24 | - | ||
25 | - @GetMapping("/list") | ||
26 | - public PageInfo<StaffApartmentSpareKey> list(@RequestParam(value = "pageNum",required = false,defaultValue = "1") | ||
27 | - int pageNum, | ||
28 | - @RequestParam(value = "pageSize",required = false,defaultValue = "5") | ||
29 | - int pageSize, | ||
30 | - @RequestParam(value = "staffname", required = false) | ||
31 | - String staffname){ | ||
32 | - return keyService.findAll(pageNum,pageSize,staffname); | ||
33 | - | ||
34 | - } | ||
35 | - | ||
36 | - @LogAnnotation(moduleName = "职工公寓备用钥匙使用记录管理",operate = "职工公寓备用钥匙使用记录添加") | ||
37 | - @PostMapping("/add") | ||
38 | - public ResultJson add(@RequestBody StaffApartmentSpareKey staffApartmentSpareKey){ | ||
39 | - | ||
40 | - int i =keyService.insertSelective(staffApartmentSpareKey); | ||
41 | - | ||
42 | - ResultJson resultJson = new ResultJson(); | ||
43 | - if (1==i){ | ||
44 | - resultJson = new ResultJson("200","添加成功"); | ||
45 | - }else { | ||
46 | - resultJson = new ResultJson("500","insert faild"); | ||
47 | - } | ||
48 | - return resultJson; | ||
49 | - } | ||
50 | - | ||
51 | - @LogAnnotation(moduleName = "职工公寓备用钥匙使用记录管理",operate = "职工公寓备用钥匙使用记录修改") | ||
52 | - @PutMapping("/edit") | ||
53 | - @ResponseBody | ||
54 | - public ResultJson edit(@RequestBody @Valid StaffApartmentSpareKey staffApartmentSpareKey){ | ||
55 | - | ||
56 | - int i =keyService.updateByPrimaryKeySelective(staffApartmentSpareKey); | ||
57 | - | ||
58 | - ResultJson resultJson = new ResultJson(); | ||
59 | - if (1==i){ | ||
60 | - resultJson = new ResultJson("200","修改成功"); | ||
61 | - }else { | ||
62 | - resultJson = new ResultJson("500","insert faild"); | ||
63 | - } | ||
64 | - return resultJson; | ||
65 | - } | ||
66 | - | ||
67 | - @LogAnnotation(moduleName = "职工公寓备用钥匙使用记录管理",operate = "职工公寓备用钥匙使用记录删除") | ||
68 | - @DeleteMapping("/del") | ||
69 | - public ResultJson reomve(@RequestBody StaffApartmentSpareKey staffApartmentSpareKey, HttpServletRequest request, HttpServletResponse response){ | ||
70 | - | ||
71 | - int i =keyService.deleteByPrimaryKey(staffApartmentSpareKey.getId()); | ||
72 | - | ||
73 | - ResultJson resultJson = new ResultJson(); | ||
74 | - if (1==i){ | ||
75 | - resultJson = new ResultJson("200","删除成功"); | ||
76 | - }else { | ||
77 | - resultJson = new ResultJson("500","insert faild"); | ||
78 | - } | ||
79 | - return resultJson; | ||
80 | - } | ||
81 | - | ||
82 | - @LogAnnotation(moduleName = "职工公寓备用钥匙使用记录管理",operate = "职工公寓备用钥匙使用记录删除") | ||
83 | - @GetMapping("/batchremove") | ||
84 | - public ResultJson reomve(String ids, HttpServletRequest request, HttpServletResponse response){ | ||
85 | - | ||
86 | - ResultJson resultJson = new ResultJson(); | ||
87 | - | ||
88 | - if (keyService.deleteByPrimaryKey(ids)>0){ | ||
89 | - resultJson = new ResultJson("200","删除成功"); | ||
90 | - }else { | ||
91 | - resultJson = new ResultJson("500","insert faild"); | ||
92 | - } | ||
93 | - return resultJson; | ||
94 | - } | ||
95 | - | ||
96 | -} |
1 | -package com.tianbo.warehouse.controller.staff; | ||
2 | - | ||
3 | - | ||
4 | -import com.github.pagehelper.PageInfo; | ||
5 | -import com.tianbo.warehouse.annotation.LogAnnotation; | ||
6 | -import com.tianbo.warehouse.controller.response.ResultJson; | ||
7 | -import com.tianbo.warehouse.model.StaffApartmentMaintain; | ||
8 | -import com.tianbo.warehouse.model.StaffApartmentSpareKey; | ||
9 | -import com.tianbo.warehouse.service.satff.KeyService; | ||
10 | -import com.tianbo.warehouse.service.satff.MaintainService; | ||
11 | -import org.springframework.beans.factory.annotation.Autowired; | ||
12 | -import org.springframework.web.bind.annotation.*; | ||
13 | - | ||
14 | -import javax.servlet.http.HttpServletRequest; | ||
15 | -import javax.servlet.http.HttpServletResponse; | ||
16 | -import javax.validation.Valid; | ||
17 | - | ||
18 | -@RestController | ||
19 | -@RequestMapping("/maintain") | ||
20 | -public class MaintainController { | ||
21 | - | ||
22 | - @Autowired | ||
23 | - MaintainService maintainService; | ||
24 | - | ||
25 | - @GetMapping("/list") | ||
26 | - public PageInfo<StaffApartmentMaintain> list(@RequestParam(value = "pageNum",required = false,defaultValue = "1") | ||
27 | - int pageNum, | ||
28 | - @RequestParam(value = "pageSize",required = false,defaultValue = "5") | ||
29 | - int pageSize, | ||
30 | - @RequestParam(value = "repairsname", required = false) | ||
31 | - String repairsname){ | ||
32 | - return maintainService.findAll(pageNum,pageSize,repairsname); | ||
33 | - | ||
34 | - } | ||
35 | - | ||
36 | - @LogAnnotation(moduleName = "职工公寓设施设备维修记录管理",operate = "职工公寓设施设备维修记录添加") | ||
37 | - @PostMapping("/add") | ||
38 | - public ResultJson add(@RequestBody StaffApartmentMaintain staffApartmentMaintain){ | ||
39 | - | ||
40 | - int i =maintainService.insertSelective(staffApartmentMaintain); | ||
41 | - | ||
42 | - ResultJson resultJson = new ResultJson(); | ||
43 | - if (1==i){ | ||
44 | - resultJson = new ResultJson("200","添加成功"); | ||
45 | - }else { | ||
46 | - resultJson = new ResultJson("500","insert faild"); | ||
47 | - } | ||
48 | - return resultJson; | ||
49 | - } | ||
50 | - | ||
51 | - @LogAnnotation(moduleName = "职工公寓设施设备维修记录管理",operate = "职工公寓设施设备维修记录修改") | ||
52 | - @PutMapping("/edit") | ||
53 | - @ResponseBody | ||
54 | - public ResultJson edit(@RequestBody @Valid StaffApartmentMaintain staffApartmentMaintain){ | ||
55 | - | ||
56 | - int i =maintainService.updateByPrimaryKeySelective(staffApartmentMaintain); | ||
57 | - | ||
58 | - ResultJson resultJson = new ResultJson(); | ||
59 | - if (1==i){ | ||
60 | - resultJson = new ResultJson("200","修改成功"); | ||
61 | - }else { | ||
62 | - resultJson = new ResultJson("500","insert faild"); | ||
63 | - } | ||
64 | - return resultJson; | ||
65 | - } | ||
66 | - | ||
67 | - @LogAnnotation(moduleName = "职工公寓设施设备维修记录管理",operate = "职工公寓设施设备维修记录删除") | ||
68 | - @DeleteMapping("/del") | ||
69 | - public ResultJson reomve(@RequestBody StaffApartmentMaintain staffApartmentMaintain, HttpServletRequest request, HttpServletResponse response){ | ||
70 | - | ||
71 | - int i =maintainService.deleteByPrimaryKey(staffApartmentMaintain.getId()); | ||
72 | - | ||
73 | - ResultJson resultJson = new ResultJson(); | ||
74 | - if (1==i){ | ||
75 | - resultJson = new ResultJson("200","删除成功"); | ||
76 | - }else { | ||
77 | - resultJson = new ResultJson("500","insert faild"); | ||
78 | - } | ||
79 | - return resultJson; | ||
80 | - } | ||
81 | - | ||
82 | - @LogAnnotation(moduleName = "职工公寓设施设备维修记录管理",operate = "职工公寓设施设备维修记录删除") | ||
83 | - @GetMapping("/batchremove") | ||
84 | - public ResultJson reomve(String ids, HttpServletRequest request, HttpServletResponse response){ | ||
85 | - | ||
86 | - ResultJson resultJson = new ResultJson(); | ||
87 | - | ||
88 | - if (maintainService.deleteByPrimaryKey(ids)>0){ | ||
89 | - resultJson = new ResultJson("200","删除成功"); | ||
90 | - }else { | ||
91 | - resultJson = new ResultJson("500","insert faild"); | ||
92 | - } | ||
93 | - return resultJson; | ||
94 | - } | ||
95 | - | ||
96 | -} |
1 | -package com.tianbo.warehouse.controller.staff; | ||
2 | - | ||
3 | - | ||
4 | -import com.github.pagehelper.PageInfo; | ||
5 | -import com.tianbo.warehouse.annotation.LogAnnotation; | ||
6 | -import com.tianbo.warehouse.controller.response.ResultJson; | ||
7 | -import com.tianbo.warehouse.model.StaffApartmentMaintain; | ||
8 | -import com.tianbo.warehouse.model.StaffApartmentOnduty; | ||
9 | -import com.tianbo.warehouse.service.satff.MaintainService; | ||
10 | -import com.tianbo.warehouse.service.satff.OnDutyService; | ||
11 | -import org.springframework.beans.factory.annotation.Autowired; | ||
12 | -import org.springframework.web.bind.annotation.*; | ||
13 | - | ||
14 | -import javax.servlet.http.HttpServletRequest; | ||
15 | -import javax.servlet.http.HttpServletResponse; | ||
16 | -import javax.validation.Valid; | ||
17 | - | ||
18 | -@RestController | ||
19 | -@RequestMapping("/on_duty") | ||
20 | -public class OnDutyController { | ||
21 | - | ||
22 | - @Autowired | ||
23 | - OnDutyService onDutyService; | ||
24 | - | ||
25 | - @GetMapping("/list") | ||
26 | - public PageInfo<StaffApartmentOnduty> list(@RequestParam(value = "pageNum",required = false,defaultValue = "1") | ||
27 | - int pageNum, | ||
28 | - @RequestParam(value = "pageSize",required = false,defaultValue = "5") | ||
29 | - int pageSize, | ||
30 | - @RequestParam(value = "warchkeeper", required = false) | ||
31 | - String warchkeeper){ | ||
32 | - return onDutyService.findAll(pageNum,pageSize,warchkeeper); | ||
33 | - | ||
34 | - } | ||
35 | - | ||
36 | - @LogAnnotation(moduleName = "职工公寓值班巡视管理",operate = "职工公寓值班巡视添加") | ||
37 | - @PostMapping("/add") | ||
38 | - public ResultJson add(@RequestBody StaffApartmentOnduty staffApartmentOnduty){ | ||
39 | - | ||
40 | - int i =onDutyService.insertSelective(staffApartmentOnduty); | ||
41 | - | ||
42 | - ResultJson resultJson = new ResultJson(); | ||
43 | - if (1==i){ | ||
44 | - resultJson = new ResultJson("200","添加成功"); | ||
45 | - }else { | ||
46 | - resultJson = new ResultJson("500","insert faild"); | ||
47 | - } | ||
48 | - return resultJson; | ||
49 | - } | ||
50 | - | ||
51 | - @LogAnnotation(moduleName = "职工公寓值班巡视管理",operate = "职工公寓值班巡视修改") | ||
52 | - @PutMapping("/edit") | ||
53 | - @ResponseBody | ||
54 | - public ResultJson edit(@RequestBody @Valid StaffApartmentOnduty staffApartmentOnduty){ | ||
55 | - | ||
56 | - int i =onDutyService.updateByPrimaryKeySelective(staffApartmentOnduty); | ||
57 | - | ||
58 | - ResultJson resultJson = new ResultJson(); | ||
59 | - if (1==i){ | ||
60 | - resultJson = new ResultJson("200","修改成功"); | ||
61 | - }else { | ||
62 | - resultJson = new ResultJson("500","insert faild"); | ||
63 | - } | ||
64 | - return resultJson; | ||
65 | - } | ||
66 | - | ||
67 | - @LogAnnotation(moduleName = "职工公寓值班巡视管理",operate = "职工公寓值班巡视删除") | ||
68 | - @DeleteMapping("/del") | ||
69 | - public ResultJson reomve(@RequestBody StaffApartmentOnduty staffApartmentOnduty, HttpServletRequest request, HttpServletResponse response){ | ||
70 | - | ||
71 | - int i =onDutyService.deleteByPrimaryKey(staffApartmentOnduty.getId()); | ||
72 | - | ||
73 | - ResultJson resultJson = new ResultJson(); | ||
74 | - if (1==i){ | ||
75 | - resultJson = new ResultJson("200","删除成功"); | ||
76 | - }else { | ||
77 | - resultJson = new ResultJson("500","insert faild"); | ||
78 | - } | ||
79 | - return resultJson; | ||
80 | - } | ||
81 | - | ||
82 | - @LogAnnotation(moduleName = "职工公寓值班巡视管理",operate = "职工公寓值班巡视删除") | ||
83 | - @GetMapping("/batchremove") | ||
84 | - public ResultJson reomve(String ids, HttpServletRequest request, HttpServletResponse response){ | ||
85 | - | ||
86 | - ResultJson resultJson = new ResultJson(); | ||
87 | - | ||
88 | - if (onDutyService.deleteByPrimaryKey(ids)>0){ | ||
89 | - resultJson = new ResultJson("200","删除成功"); | ||
90 | - }else { | ||
91 | - resultJson = new ResultJson("500","insert faild"); | ||
92 | - } | ||
93 | - return resultJson; | ||
94 | - } | ||
95 | - | ||
96 | -} |
src/main/java/com/tianbo/warehouse/controller/staff/StaffSecurityInspectionController.java
已删除
100755 → 0
1 | -package com.tianbo.warehouse.controller.staff; | ||
2 | - | ||
3 | - | ||
4 | -import com.github.pagehelper.PageInfo; | ||
5 | -import com.tianbo.warehouse.annotation.LogAnnotation; | ||
6 | -import com.tianbo.warehouse.controller.response.ResultJson; | ||
7 | -import com.tianbo.warehouse.model.StaffSecurityInspection; | ||
8 | -import com.tianbo.warehouse.service.satff.StaffSecurityInspectionService; | ||
9 | -import org.springframework.beans.factory.annotation.Autowired; | ||
10 | -import org.springframework.web.bind.annotation.*; | ||
11 | - | ||
12 | -import javax.servlet.http.HttpServletRequest; | ||
13 | -import javax.servlet.http.HttpServletResponse; | ||
14 | -import javax.validation.Valid; | ||
15 | - | ||
16 | -@RestController | ||
17 | -@RequestMapping("/inspection") | ||
18 | -public class StaffSecurityInspectionController { | ||
19 | - | ||
20 | - @Autowired | ||
21 | - StaffSecurityInspectionService staffSecurityInspectionService; | ||
22 | - | ||
23 | - @GetMapping("/list") | ||
24 | - public PageInfo<StaffSecurityInspection> list(@RequestParam(value = "pageNum",required = false,defaultValue = "1") | ||
25 | - int pageNum, | ||
26 | - @RequestParam(value = "pageSize",required = false,defaultValue = "5") | ||
27 | - int pageSize, | ||
28 | - @RequestParam(value = "securityInspectionName", required = false) | ||
29 | - String securityInspectionName){ | ||
30 | - return staffSecurityInspectionService.findAll(pageNum,pageSize,securityInspectionName); | ||
31 | - | ||
32 | - } | ||
33 | - | ||
34 | - @LogAnnotation(moduleName = "职工公寓安全巡视管理",operate = "职工公寓安全巡视添加") | ||
35 | - @PostMapping("/add") | ||
36 | - public ResultJson add(@RequestBody StaffSecurityInspection staffSecurityInspection){ | ||
37 | - | ||
38 | - int i =staffSecurityInspectionService.insertSelective(staffSecurityInspection); | ||
39 | - | ||
40 | - ResultJson resultJson = new ResultJson(); | ||
41 | - if (1==i){ | ||
42 | - resultJson = new ResultJson("200","添加成功"); | ||
43 | - }else { | ||
44 | - resultJson = new ResultJson("500","insert faild"); | ||
45 | - } | ||
46 | - return resultJson; | ||
47 | - } | ||
48 | - | ||
49 | - @LogAnnotation(moduleName = "职工公寓安全巡视管理",operate = "职工公寓安全巡视修改") | ||
50 | - @PutMapping("/edit") | ||
51 | - @ResponseBody | ||
52 | - public ResultJson edit(@RequestBody @Valid StaffSecurityInspection staffSecurityInspection){ | ||
53 | - | ||
54 | - int i =staffSecurityInspectionService.updateByPrimaryKeySelective(staffSecurityInspection); | ||
55 | - | ||
56 | - ResultJson resultJson = new ResultJson(); | ||
57 | - if (1==i){ | ||
58 | - resultJson = new ResultJson("200","修改成功"); | ||
59 | - }else { | ||
60 | - resultJson = new ResultJson("500","insert faild"); | ||
61 | - } | ||
62 | - return resultJson; | ||
63 | - } | ||
64 | - | ||
65 | - @LogAnnotation(moduleName = "职工公寓安全巡视管理",operate = "职工公寓安全巡视删除") | ||
66 | - @DeleteMapping("/del") | ||
67 | - public ResultJson reomve(@RequestBody StaffSecurityInspection staffSecurityInspection, HttpServletRequest request, HttpServletResponse response){ | ||
68 | - | ||
69 | - int i =staffSecurityInspectionService.deleteByPrimaryKey(staffSecurityInspection.getSecurityInspectionId()); | ||
70 | - | ||
71 | - ResultJson resultJson = new ResultJson(); | ||
72 | - if (1==i){ | ||
73 | - resultJson = new ResultJson("200","删除成功"); | ||
74 | - }else { | ||
75 | - resultJson = new ResultJson("500","insert faild"); | ||
76 | - } | ||
77 | - return resultJson; | ||
78 | - } | ||
79 | - | ||
80 | - @LogAnnotation(moduleName = "职工公寓安全巡视管理",operate = "职工公寓安全巡视删除") | ||
81 | - @GetMapping("/batchremove") | ||
82 | - public ResultJson reomve(String ids, HttpServletRequest request, HttpServletResponse response){ | ||
83 | - | ||
84 | - ResultJson resultJson = new ResultJson(); | ||
85 | - | ||
86 | - if (staffSecurityInspectionService.deleteByPrimaryKey(ids)>0){ | ||
87 | - resultJson = new ResultJson("200","删除成功"); | ||
88 | - }else { | ||
89 | - resultJson = new ResultJson("500","insert faild"); | ||
90 | - } | ||
91 | - return resultJson; | ||
92 | - } | ||
93 | - | ||
94 | -} |
src/main/java/com/tianbo/warehouse/controller/water/WaterStationsPatrolController.java
已删除
100755 → 0
1 | -package com.tianbo.warehouse.controller.water; | ||
2 | - | ||
3 | -import com.github.pagehelper.PageInfo; | ||
4 | -import com.tianbo.warehouse.annotation.LogAnnotation; | ||
5 | -import com.tianbo.warehouse.controller.response.ResultJson; | ||
6 | -import com.tianbo.warehouse.model.Company; | ||
7 | -import com.tianbo.warehouse.model.WaterStationsPatrol; | ||
8 | -import com.tianbo.warehouse.service.CompanyService; | ||
9 | -import com.tianbo.warehouse.service.water.WaterStationsPatrolService; | ||
10 | -import org.springframework.beans.factory.annotation.Autowired; | ||
11 | -import org.springframework.web.bind.annotation.*; | ||
12 | - | ||
13 | -import javax.servlet.http.HttpServletRequest; | ||
14 | -import javax.servlet.http.HttpServletResponse; | ||
15 | -import javax.validation.Valid; | ||
16 | - | ||
17 | -@RestController | ||
18 | -@RequestMapping("/water_stations_patrol") | ||
19 | -public class WaterStationsPatrolController { | ||
20 | - | ||
21 | - @Autowired | ||
22 | - WaterStationsPatrolService waterStationsPatrolService; | ||
23 | - | ||
24 | - @GetMapping("/list") | ||
25 | - public PageInfo<WaterStationsPatrol> list(@RequestParam(value = "pageNum",required = false,defaultValue = "1") | ||
26 | - int pageNum, | ||
27 | - @RequestParam(value = "pageSize",required = false,defaultValue = "5") | ||
28 | - int pageSize){ | ||
29 | - return waterStationsPatrolService.findAll(pageNum,pageSize); | ||
30 | - | ||
31 | - } | ||
32 | - | ||
33 | - @LogAnnotation(moduleName = "二水厂-水站巡视记录单管理",operate = "二水厂-水站巡视记录单管理添加") | ||
34 | - @PostMapping("/add") | ||
35 | - public ResultJson add(@RequestBody WaterStationsPatrol waterStationsPatrol){ | ||
36 | - | ||
37 | - int i =waterStationsPatrolService.insertSelective(waterStationsPatrol); | ||
38 | - | ||
39 | - ResultJson resultJson = new ResultJson(); | ||
40 | - if (1==i){ | ||
41 | - resultJson = new ResultJson("200","添加成功"); | ||
42 | - }else { | ||
43 | - resultJson = new ResultJson("500","insert faild"); | ||
44 | - } | ||
45 | - return resultJson; | ||
46 | - } | ||
47 | - | ||
48 | - @LogAnnotation(moduleName = "二水厂-水站巡视记录单管理",operate = "二水厂-水站巡视记录单管理修改") | ||
49 | - @PutMapping("/edit") | ||
50 | - @ResponseBody | ||
51 | - public ResultJson edit(@RequestBody @Valid WaterStationsPatrol waterStationsPatrol){ | ||
52 | - | ||
53 | - int i =waterStationsPatrolService.updateByPrimaryKeySelective(waterStationsPatrol); | ||
54 | - | ||
55 | - ResultJson resultJson = new ResultJson(); | ||
56 | - if (1==i){ | ||
57 | - resultJson = new ResultJson("200","修改成功"); | ||
58 | - }else { | ||
59 | - resultJson = new ResultJson("500","insert faild"); | ||
60 | - } | ||
61 | - return resultJson; | ||
62 | - } | ||
63 | - | ||
64 | - @LogAnnotation(moduleName = "二水厂-水站巡视记录单管理",operate = "二水厂-水站巡视记录单管理删除") | ||
65 | - @DeleteMapping("/del") | ||
66 | - public ResultJson reomve(@RequestBody WaterStationsPatrol waterStationsPatrol, HttpServletRequest request, HttpServletResponse response){ | ||
67 | - | ||
68 | - int i =waterStationsPatrolService.deleteByPrimaryKey(waterStationsPatrol.getId()); | ||
69 | - | ||
70 | - ResultJson resultJson = new ResultJson(); | ||
71 | - if (1==i){ | ||
72 | - resultJson = new ResultJson("200","删除成功"); | ||
73 | - }else { | ||
74 | - resultJson = new ResultJson("500","insert faild"); | ||
75 | - } | ||
76 | - return resultJson; | ||
77 | - } | ||
78 | - | ||
79 | - @LogAnnotation(moduleName = "二水厂-水站巡视记录单管理",operate = "二水厂-水站巡视记录单管理批量删除") | ||
80 | - @GetMapping("/batchremove") | ||
81 | - public ResultJson reomve(String ids, HttpServletRequest request, HttpServletResponse response){ | ||
82 | - | ||
83 | - ResultJson resultJson = new ResultJson(); | ||
84 | - | ||
85 | - if (waterStationsPatrolService.deleteByPrimaryKey(ids)>0){ | ||
86 | - resultJson = new ResultJson("200","删除成功"); | ||
87 | - }else { | ||
88 | - resultJson = new ResultJson("500","insert faild"); | ||
89 | - } | ||
90 | - return resultJson; | ||
91 | - } | ||
92 | - | ||
93 | -} |
@@ -26,6 +26,8 @@ public interface PERMISSIONMapper { | @@ -26,6 +26,8 @@ public interface PERMISSIONMapper { | ||
26 | 26 | ||
27 | List<PERMISSION> findByUserId(Integer userId); | 27 | List<PERMISSION> findByUserId(Integer userId); |
28 | 28 | ||
29 | + List<PERMISSION> findByUserIdKako(String userId); | ||
30 | + | ||
29 | /** | 31 | /** |
30 | * 登录验证成功后获取用户权限列表非树形结构 | 32 | * 登录验证成功后获取用户权限列表非树形结构 |
31 | * @param userId | 33 | * @param userId |
@@ -33,6 +35,8 @@ public interface PERMISSIONMapper { | @@ -33,6 +35,8 @@ public interface PERMISSIONMapper { | ||
33 | */ | 35 | */ |
34 | List<PERMISSION> findByUserIdWithLogin(Integer userId); | 36 | List<PERMISSION> findByUserIdWithLogin(Integer userId); |
35 | 37 | ||
38 | + List<PERMISSION> findByUserIdWithLoginKako(String userId); | ||
39 | + | ||
36 | List<PERMISSION> findByRoleId(Integer roleId); | 40 | List<PERMISSION> findByRoleId(Integer roleId); |
37 | 41 | ||
38 | List<String> findRoleListByUrl(String permissionUrl); | 42 | List<String> findRoleListByUrl(String permissionUrl); |
@@ -16,6 +16,8 @@ public interface ROLEMapper { | @@ -16,6 +16,8 @@ public interface ROLEMapper { | ||
16 | 16 | ||
17 | List<ROLE> findRolesByUserId(Integer userId); | 17 | List<ROLE> findRolesByUserId(Integer userId); |
18 | 18 | ||
19 | + List<ROLE> findRolesByUserIdKako(String userId); | ||
20 | + | ||
19 | List<ROLE> selectByParentId(Integer roleId); | 21 | List<ROLE> selectByParentId(Integer roleId); |
20 | 22 | ||
21 | List<ROLE> findAll(@Param("roleName") String roleName, | 23 | List<ROLE> findAll(@Param("roleName") String roleName, |
@@ -65,8 +65,8 @@ public class PERMISSION implements Serializable { | @@ -65,8 +65,8 @@ public class PERMISSION implements Serializable { | ||
65 | return ismenu; | 65 | return ismenu; |
66 | } | 66 | } |
67 | 67 | ||
68 | - public void setIsmenu(String ismenu) { | ||
69 | - this.ismenu = "0".equals(ismenu)?false:true ; | 68 | + public void setIsmenu(Boolean ismenu) { |
69 | + this.ismenu = ismenu ; | ||
70 | } | 70 | } |
71 | 71 | ||
72 | public Integer getParentId() { | 72 | public Integer getParentId() { |
@@ -24,7 +24,7 @@ public class USERS implements UserDetails { | @@ -24,7 +24,7 @@ public class USERS implements UserDetails { | ||
24 | private Integer userId; | 24 | private Integer userId; |
25 | 25 | ||
26 | @NotBlank(message="用户名不能为空",groups={InsertUser.class, UpdateUser.class}) | 26 | @NotBlank(message="用户名不能为空",groups={InsertUser.class, UpdateUser.class}) |
27 | - @Length(min = 5, max = 11, message = "username 长度必须在 {min} - {max} 之间",groups={InsertUser.class, UpdateUser.class}) | 27 | + @Length(min = 4, max = 11, message = "username 长度必须在 {min} - {max} 之间",groups={InsertUser.class, UpdateUser.class}) |
28 | @CheckUserExist(message = "用户已存在",groups=InsertUser.class) | 28 | @CheckUserExist(message = "用户已存在",groups=InsertUser.class) |
29 | private String username; | 29 | private String username; |
30 | 30 |
1 | package com.tianbo.warehouse.security.config; | 1 | package com.tianbo.warehouse.security.config; |
2 | 2 | ||
3 | -import com.netflix.discovery.converters.Auto; | ||
4 | import com.tianbo.warehouse.security.CustomUserDetailService; | 3 | import com.tianbo.warehouse.security.CustomUserDetailService; |
5 | import com.tianbo.warehouse.security.filter.JwtAuthenticationTokenFilter; | 4 | import com.tianbo.warehouse.security.filter.JwtAuthenticationTokenFilter; |
6 | import com.tianbo.warehouse.security.handel.*; | 5 | import com.tianbo.warehouse.security.handel.*; |
7 | import com.tianbo.warehouse.security.MyFilterSecurityInterceptor; | 6 | import com.tianbo.warehouse.security.MyFilterSecurityInterceptor; |
7 | +import com.tianbo.warehouse.security.handel.kakologin.MyKakoAuthenticationSuccessHandler; | ||
8 | +import com.tianbo.warehouse.security.handel.kakologin.MyLoginAuthenticationProcessFilter; | ||
8 | import org.springframework.beans.factory.annotation.Autowired; | 9 | import org.springframework.beans.factory.annotation.Autowired; |
9 | import org.springframework.beans.factory.annotation.Qualifier; | 10 | import org.springframework.beans.factory.annotation.Qualifier; |
10 | -import org.springframework.boot.actuate.autoconfigure.security.servlet.EndpointRequest; | ||
11 | import org.springframework.boot.autoconfigure.security.servlet.PathRequest; | 11 | import org.springframework.boot.autoconfigure.security.servlet.PathRequest; |
12 | import org.springframework.context.annotation.Configuration; | 12 | import org.springframework.context.annotation.Configuration; |
13 | import org.springframework.core.annotation.Order; | 13 | import org.springframework.core.annotation.Order; |
14 | import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; | 14 | import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; |
15 | -import org.springframework.security.config.annotation.authentication.configuration.EnableGlobalAuthentication; | ||
16 | import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; | 15 | import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; |
17 | import org.springframework.security.config.annotation.web.builders.HttpSecurity; | 16 | import org.springframework.security.config.annotation.web.builders.HttpSecurity; |
18 | import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; | 17 | import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; |
19 | import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; | 18 | import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; |
20 | import org.springframework.security.config.http.SessionCreationPolicy; | 19 | import org.springframework.security.config.http.SessionCreationPolicy; |
21 | -import org.springframework.security.core.userdetails.UserDetailsService; | ||
22 | import org.springframework.security.crypto.password.PasswordEncoder; | 20 | import org.springframework.security.crypto.password.PasswordEncoder; |
23 | import org.springframework.security.web.access.intercept.FilterSecurityInterceptor; | 21 | import org.springframework.security.web.access.intercept.FilterSecurityInterceptor; |
24 | import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; | 22 | import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; |
@@ -37,7 +35,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter { | @@ -37,7 +35,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter { | ||
37 | private PasswordEncoder passwordEncoder; | 35 | private PasswordEncoder passwordEncoder; |
38 | 36 | ||
39 | @Autowired | 37 | @Autowired |
40 | - private MyAuthenticationSuccessHandler successHandler; | 38 | + private MyKakoAuthenticationSuccessHandler successHandler; |
41 | 39 | ||
42 | @Autowired | 40 | @Autowired |
43 | private MyAuthenticationFailHandler failHandler; | 41 | private MyAuthenticationFailHandler failHandler; |
@@ -58,6 +56,8 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter { | @@ -58,6 +56,8 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter { | ||
58 | @Autowired | 56 | @Autowired |
59 | private JwtAuthenticationTokenFilter jwtAuthenticationTokenFilter; | 57 | private JwtAuthenticationTokenFilter jwtAuthenticationTokenFilter; |
60 | 58 | ||
59 | + private final MyLoginAuthenticationProcessFilter adminAuthenticationProcessingFilter; | ||
60 | + | ||
61 | @Override | 61 | @Override |
62 | protected void configure(AuthenticationManagerBuilder auth) throws Exception { | 62 | protected void configure(AuthenticationManagerBuilder auth) throws Exception { |
63 | //user Details Service验证 | 63 | //user Details Service验证 |
@@ -66,6 +66,16 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter { | @@ -66,6 +66,16 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter { | ||
66 | auth.eraseCredentials(false); | 66 | auth.eraseCredentials(false); |
67 | } | 67 | } |
68 | 68 | ||
69 | + | ||
70 | + /** | ||
71 | + * 用户密码校验过滤器 | ||
72 | + */ | ||
73 | + | ||
74 | + | ||
75 | + public WebSecurityConfig(MyLoginAuthenticationProcessFilter adminAuthenticationProcessingFilter) { | ||
76 | + this.adminAuthenticationProcessingFilter = adminAuthenticationProcessingFilter; | ||
77 | + } | ||
78 | + | ||
69 | /** | 79 | /** |
70 | * 在configure(HttpSecurity http)方法中, | 80 | * 在configure(HttpSecurity http)方法中, |
71 | * 通过withObjectPostProcessor将刚刚创建的UrlFilterInvocationSecurityMetadataSource和UrlAccessDecisionManager注入进来。 | 81 | * 通过withObjectPostProcessor将刚刚创建的UrlFilterInvocationSecurityMetadataSource和UrlAccessDecisionManager注入进来。 |
@@ -130,6 +140,8 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter { | @@ -130,6 +140,8 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter { | ||
130 | //关闭session | 140 | //关闭session |
131 | http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS); | 141 | http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS); |
132 | 142 | ||
143 | + // 自定义过滤器认证用户名密码 | ||
144 | + http.addFilterAt(adminAuthenticationProcessingFilter, UsernamePasswordAuthenticationFilter.class); | ||
133 | 145 | ||
134 | //session管理 | 146 | //session管理 |
135 | //session失效后跳转 | 147 | //session失效后跳转 |
1 | +/** | ||
2 | + * Copyright (c) 2005-2012 springside.org.cn | ||
3 | + */ | ||
4 | +package com.tianbo.warehouse.security.handel.kakologin; | ||
5 | + | ||
6 | +import org.apache.commons.codec.DecoderException; | ||
7 | +import org.apache.commons.codec.binary.Base64; | ||
8 | +import org.apache.commons.codec.binary.Hex; | ||
9 | + | ||
10 | +import java.io.UnsupportedEncodingException; | ||
11 | + | ||
12 | +/** | ||
13 | + * 封装各种格式的编码解码工具类. | ||
14 | + * 1.Commons-Codec的 hex/base64 编码 | ||
15 | + * 2.自制的base62 编码 | ||
16 | + * 3.Commons-Lang的xml/html escape | ||
17 | + * 4.JDK提供的URLEncoder | ||
18 | + * @author calvin | ||
19 | + * @version 2013-01-15 | ||
20 | + */ | ||
21 | +public class Encodes { | ||
22 | + | ||
23 | + private static final String DEFAULT_URL_ENCODING = "UTF-8"; | ||
24 | + private static final char[] BASE62 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".toCharArray(); | ||
25 | + | ||
26 | + /** | ||
27 | + * Hex编码. | ||
28 | + */ | ||
29 | + public static String encodeHex(byte[] input) { | ||
30 | + return new String(Hex.encodeHex(input)); | ||
31 | + } | ||
32 | + | ||
33 | + /** | ||
34 | + * Hex解码. | ||
35 | + */ | ||
36 | + public static byte[] decodeHex(String input) { | ||
37 | + try { | ||
38 | + return Hex.decodeHex(input.toCharArray()); | ||
39 | + } catch (DecoderException e) { | ||
40 | + throw Exceptions.unchecked(e); | ||
41 | + } | ||
42 | + } | ||
43 | + | ||
44 | + /** | ||
45 | + * Base64编码. | ||
46 | + */ | ||
47 | + public static String encodeBase64(byte[] input) { | ||
48 | + return new String(Base64.encodeBase64(input)); | ||
49 | + } | ||
50 | + | ||
51 | + /** | ||
52 | + * Base64编码. | ||
53 | + */ | ||
54 | + public static String encodeBase64(String input) { | ||
55 | + try { | ||
56 | + return new String(Base64.encodeBase64(input.getBytes(DEFAULT_URL_ENCODING))); | ||
57 | + } catch (UnsupportedEncodingException e) { | ||
58 | + return ""; | ||
59 | + } | ||
60 | + } | ||
61 | + | ||
62 | +// /** | ||
63 | +// * Base64编码, URL安全(将Base64中的URL非法字符'+'和'/'转为'-'和'_', 见RFC3548). | ||
64 | +// */ | ||
65 | +// public static String encodeUrlSafeBase64(byte[] input) { | ||
66 | +// return Base64.encodeBase64URLSafe(input); | ||
67 | +// } | ||
68 | + | ||
69 | + /** | ||
70 | + * Base64解码. | ||
71 | + */ | ||
72 | + public static byte[] decodeBase64(String input) { | ||
73 | + return Base64.decodeBase64(input.getBytes()); | ||
74 | + } | ||
75 | + | ||
76 | + /** | ||
77 | + * Base64解码. | ||
78 | + */ | ||
79 | + public static String decodeBase64String(String input) { | ||
80 | + try { | ||
81 | + return new String(Base64.decodeBase64(input.getBytes()), DEFAULT_URL_ENCODING); | ||
82 | + } catch (UnsupportedEncodingException e) { | ||
83 | + return ""; | ||
84 | + } | ||
85 | + } | ||
86 | + | ||
87 | + /** | ||
88 | + * Base62编码。 | ||
89 | + */ | ||
90 | + public static String encodeBase62(byte[] input) { | ||
91 | + char[] chars = new char[input.length]; | ||
92 | + for (int i = 0; i < input.length; i++) { | ||
93 | + chars[i] = BASE62[((input[i] & 0xFF) % BASE62.length)]; | ||
94 | + } | ||
95 | + return new String(chars); | ||
96 | + } | ||
97 | + | ||
98 | +} |
1 | +/** | ||
2 | + * Copyright (c) 2005-2012 springside.org.cn | ||
3 | + */ | ||
4 | +package com.tianbo.warehouse.security.handel.kakologin; | ||
5 | + | ||
6 | +import javax.servlet.http.HttpServletRequest; | ||
7 | +import java.io.PrintWriter; | ||
8 | +import java.io.StringWriter; | ||
9 | + | ||
10 | +/** | ||
11 | + * 关于异常的工具类. | ||
12 | + * @author calvin | ||
13 | + * @version 2013-01-15 | ||
14 | + */ | ||
15 | +public class Exceptions { | ||
16 | + | ||
17 | + /** | ||
18 | + * 将CheckedException转换为UncheckedException. | ||
19 | + */ | ||
20 | + public static RuntimeException unchecked(Exception e) { | ||
21 | + if (e instanceof RuntimeException) { | ||
22 | + return (RuntimeException) e; | ||
23 | + } else { | ||
24 | + return new RuntimeException(e); | ||
25 | + } | ||
26 | + } | ||
27 | + | ||
28 | + /** | ||
29 | + * 将ErrorStack转化为String. | ||
30 | + */ | ||
31 | + public static String getStackTraceAsString(Throwable e) { | ||
32 | + if (e == null){ | ||
33 | + return ""; | ||
34 | + } | ||
35 | + StringWriter stringWriter = new StringWriter(); | ||
36 | + e.printStackTrace(new PrintWriter(stringWriter)); | ||
37 | + return stringWriter.toString(); | ||
38 | + } | ||
39 | + | ||
40 | + /** | ||
41 | + * 判断异常是否由某些底层的异常引起. | ||
42 | + */ | ||
43 | + public static boolean isCausedBy(Exception ex, Class<? extends Exception>... causeExceptionClasses) { | ||
44 | + Throwable cause = ex.getCause(); | ||
45 | + while (cause != null) { | ||
46 | + for (Class<? extends Exception> causeClass : causeExceptionClasses) { | ||
47 | + if (causeClass.isInstance(cause)) { | ||
48 | + return true; | ||
49 | + } | ||
50 | + } | ||
51 | + cause = cause.getCause(); | ||
52 | + } | ||
53 | + return false; | ||
54 | + } | ||
55 | + | ||
56 | + /** | ||
57 | + * 在request中获取异常类 | ||
58 | + * @param request | ||
59 | + * @return | ||
60 | + */ | ||
61 | + public static Throwable getThrowable(HttpServletRequest request){ | ||
62 | + Throwable ex = null; | ||
63 | + if (request.getAttribute("exception") != null) { | ||
64 | + ex = (Throwable) request.getAttribute("exception"); | ||
65 | + } else if (request.getAttribute("javax.servlet.error.exception") != null) { | ||
66 | + ex = (Throwable) request.getAttribute("javax.servlet.error.exception"); | ||
67 | + } | ||
68 | + return ex; | ||
69 | + } | ||
70 | + | ||
71 | +} |
1 | +package com.tianbo.warehouse.security.handel.kakologin; | ||
2 | + | ||
3 | +import com.tianbo.warehouse.model.KakoUser; | ||
4 | +import com.tianbo.warehouse.service.kakoImp.KakoUserService; | ||
5 | +import org.springframework.beans.factory.annotation.Autowired; | ||
6 | +import org.springframework.security.core.userdetails.UserDetails; | ||
7 | +import org.springframework.security.core.userdetails.UserDetailsService; | ||
8 | +import org.springframework.security.core.userdetails.UsernameNotFoundException; | ||
9 | +import org.springframework.stereotype.Service; | ||
10 | + | ||
11 | +import java.util.List; | ||
12 | + | ||
13 | +@Service | ||
14 | +public class KakoUserDetailService implements UserDetailsService { | ||
15 | + | ||
16 | + @Autowired | ||
17 | + private KakoUserService userService; | ||
18 | + | ||
19 | + @Override | ||
20 | + public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { | ||
21 | + | ||
22 | + | ||
23 | + UserDetails user = userService.loadByUsername(username); | ||
24 | + if (user == null) { | ||
25 | + throw new UsernameNotFoundException("用户名不存在"); | ||
26 | +// throw new BadCredentialsException("用户名不存在"); | ||
27 | + } | ||
28 | + | ||
29 | + return user; | ||
30 | + | ||
31 | + } | ||
32 | +} |
src/main/java/com/tianbo/warehouse/security/handel/kakologin/MyAuthenticationManager.java
0 → 100644
1 | +package com.tianbo.warehouse.security.handel.kakologin; | ||
2 | + | ||
3 | +import org.springframework.security.authentication.AuthenticationManager; | ||
4 | +import org.springframework.security.authentication.ProviderNotFoundException; | ||
5 | +import org.springframework.security.core.Authentication; | ||
6 | +import org.springframework.security.core.AuthenticationException; | ||
7 | +import org.springframework.stereotype.Component; | ||
8 | + | ||
9 | +import java.util.Objects; | ||
10 | + | ||
11 | +/** | ||
12 | + * 自定义认证管理器 | ||
13 | + */ | ||
14 | +@Component | ||
15 | +public class MyAuthenticationManager implements AuthenticationManager { | ||
16 | + private final MyLoginAuthenticationProvider adminAuthenticationProvider; | ||
17 | + | ||
18 | + public MyAuthenticationManager(MyLoginAuthenticationProvider adminAuthenticationProvider) { | ||
19 | + this.adminAuthenticationProvider = adminAuthenticationProvider; | ||
20 | + } | ||
21 | + | ||
22 | + @Override | ||
23 | + public Authentication authenticate(Authentication authentication) throws AuthenticationException { | ||
24 | + Authentication result = adminAuthenticationProvider.authenticate(authentication); | ||
25 | + if (Objects.nonNull(result)) { | ||
26 | + return result; | ||
27 | + } | ||
28 | + throw new ProviderNotFoundException("Authentication failed!"); | ||
29 | + } | ||
30 | +} |
src/main/java/com/tianbo/warehouse/security/handel/kakologin/MyKakoAuthenticationSuccessHandler.java
0 → 100755
1 | +package com.tianbo.warehouse.security.handel.kakologin; | ||
2 | + | ||
3 | +import com.alibaba.fastjson.JSON; | ||
4 | +import com.fasterxml.jackson.databind.ObjectMapper; | ||
5 | +import com.tianbo.warehouse.bean.AuthSuccessResponse; | ||
6 | +import com.tianbo.warehouse.model.KakoUser; | ||
7 | +import com.tianbo.warehouse.model.USERS; | ||
8 | +import com.tianbo.warehouse.security.config.SecurityProperties; | ||
9 | +import com.tianbo.warehouse.security.filter.JwtTokenUtil; | ||
10 | +import com.tianbo.warehouse.security.model.LoginType; | ||
11 | +import com.tianbo.warehouse.service.PermissionService; | ||
12 | +import com.tianbo.warehouse.util.RedisUtils; | ||
13 | +import org.apache.commons.logging.Log; | ||
14 | +import org.apache.commons.logging.LogFactory; | ||
15 | +import org.springframework.beans.factory.annotation.Autowired; | ||
16 | +import org.springframework.beans.factory.annotation.Value; | ||
17 | +import org.springframework.security.authentication.DisabledException; | ||
18 | +import org.springframework.security.core.Authentication; | ||
19 | +import org.springframework.security.core.userdetails.UserDetails; | ||
20 | +import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler; | ||
21 | +import org.springframework.security.web.savedrequest.HttpSessionRequestCache; | ||
22 | +import org.springframework.security.web.savedrequest.RequestCache; | ||
23 | +import org.springframework.security.web.savedrequest.SavedRequest; | ||
24 | +import org.springframework.stereotype.Component; | ||
25 | +import org.springframework.util.StringUtils; | ||
26 | + | ||
27 | +import javax.servlet.ServletException; | ||
28 | +import javax.servlet.http.HttpServletRequest; | ||
29 | +import javax.servlet.http.HttpServletResponse; | ||
30 | +import java.io.IOException; | ||
31 | +import java.util.Map; | ||
32 | + | ||
33 | +/** | ||
34 | + * 登录成功后的返回处理 | ||
35 | + */ | ||
36 | +@Component | ||
37 | +public class MyKakoAuthenticationSuccessHandler extends SavedRequestAwareAuthenticationSuccessHandler{ | ||
38 | + protected final Log logger = LogFactory.getLog(this.getClass()); | ||
39 | + | ||
40 | + @Value("${jwt.max-alive}") | ||
41 | + protected Integer jwtMaxAlive; | ||
42 | + | ||
43 | + @Autowired | ||
44 | + private ObjectMapper objectMapper; | ||
45 | + | ||
46 | + @Autowired | ||
47 | + private PermissionService permissionService; | ||
48 | + | ||
49 | + private RequestCache requestCache = new HttpSessionRequestCache(); | ||
50 | + | ||
51 | + @Autowired | ||
52 | + private SecurityProperties securityProperties; | ||
53 | + | ||
54 | + @Autowired | ||
55 | + RedisUtils redisUtils; | ||
56 | + @Override | ||
57 | + public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws ServletException, IOException { | ||
58 | + logger.info("登录成功"); | ||
59 | + if (LoginType.JSON.equals(securityProperties.getBrowser().getLoginType())){ | ||
60 | + //将 authention 信息打包成json格式返回 | ||
61 | + response.setContentType("application/json;charset=UTF-8"); | ||
62 | +// response.setHeader("Access-Control-Allow-Origin","*"); | ||
63 | + | ||
64 | + | ||
65 | + KakoUser user = (KakoUser) authentication.getPrincipal(); | ||
66 | + | ||
67 | + //返回前端登陆成功后的用户信息 | ||
68 | + KakoUser loginedUser = new KakoUser(); | ||
69 | + loginedUser.setLoginName(user.getUsername()); | ||
70 | + loginedUser.setId(user.getId()); | ||
71 | + loginedUser.setName(user.getName()); | ||
72 | + | ||
73 | + | ||
74 | + //设置用户的TOKEN的有效时间,时间配置在配置文件中设置 | ||
75 | + String jwtToken = JwtTokenUtil.generateToken(loginedUser.getUsername(), jwtMaxAlive); | ||
76 | + loginedUser.setToken(jwtToken); | ||
77 | + //这里将登录成功的[user]对象数据写入redis缓存,KEY为token value为user的JSON对象 | ||
78 | + String json = JSON.toJSONString(user); | ||
79 | + redisUtils.set(jwtToken, json,3600*24*7); | ||
80 | + Map<String,Object> menuMap = permissionService.getUserMenusKako(user.getId()); | ||
81 | + //返回用户信息和用户可访问的目录列表 | ||
82 | + response.getWriter().write(objectMapper.writeValueAsString(new AuthSuccessResponse(loginedUser,menuMap))); | ||
83 | + }else { | ||
84 | + //走原来的处理流程 | ||
85 | + SavedRequest savedRequest = this.requestCache.getRequest(request, response); | ||
86 | + if (savedRequest == null) { | ||
87 | + super.onAuthenticationSuccess(request, response, authentication); | ||
88 | + } else { | ||
89 | + String targetUrlParameter = this.getTargetUrlParameter(); | ||
90 | + if (!this.isAlwaysUseDefaultTargetUrl() && (targetUrlParameter == null || !StringUtils.hasText(request.getParameter(targetUrlParameter)))) { | ||
91 | + this.clearAuthenticationAttributes(request); | ||
92 | + String targetUrl = savedRequest.getRedirectUrl(); | ||
93 | + this.logger.debug("Redirecting to DefaultSavedRequest Url: " + targetUrl); | ||
94 | + this.getRedirectStrategy().sendRedirect(request, response, targetUrl); | ||
95 | + } else { | ||
96 | + this.requestCache.removeRequest(request, response); | ||
97 | + super.onAuthenticationSuccess(request, response, authentication); | ||
98 | + } | ||
99 | + } | ||
100 | + } | ||
101 | + | ||
102 | + } | ||
103 | + | ||
104 | + | ||
105 | +} |
src/main/java/com/tianbo/warehouse/security/handel/kakologin/MyLoginAuthenticationProcessFilter.java
0 → 100644
1 | +package com.tianbo.warehouse.security.handel.kakologin; | ||
2 | + | ||
3 | + | ||
4 | +import com.tianbo.warehouse.security.handel.MyAuthenticationFailHandler; | ||
5 | +import lombok.extern.slf4j.Slf4j; | ||
6 | +import org.springframework.security.authentication.AuthenticationServiceException; | ||
7 | +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; | ||
8 | +import org.springframework.security.core.Authentication; | ||
9 | +import org.springframework.security.core.AuthenticationException; | ||
10 | +import org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter; | ||
11 | +import org.springframework.security.web.util.matcher.AntPathRequestMatcher; | ||
12 | +import org.springframework.stereotype.Component; | ||
13 | + | ||
14 | +import javax.servlet.http.HttpServletRequest; | ||
15 | +import javax.servlet.http.HttpServletResponse; | ||
16 | + | ||
17 | +/** | ||
18 | + * 用户登录自定义校验过滤器 | ||
19 | + */ | ||
20 | +@Slf4j | ||
21 | +@Component | ||
22 | +public class MyLoginAuthenticationProcessFilter extends AbstractAuthenticationProcessingFilter { | ||
23 | + /** | ||
24 | + * @param authenticationManager: 认证管理器 | ||
25 | + * @param adminAuthenticationSuccessHandler: 认证成功处理 | ||
26 | + * @param adminAuthenticationFailureHandler: 认证失败处理 | ||
27 | + */ | ||
28 | + public MyLoginAuthenticationProcessFilter(MyAuthenticationManager authenticationManager, MyKakoAuthenticationSuccessHandler adminAuthenticationSuccessHandler, MyAuthenticationFailHandler adminAuthenticationFailureHandler) { | ||
29 | + super(new AntPathRequestMatcher("/login", "POST")); | ||
30 | + this.setAuthenticationManager(authenticationManager); | ||
31 | + this.setAuthenticationSuccessHandler(adminAuthenticationSuccessHandler); | ||
32 | + this.setAuthenticationFailureHandler(adminAuthenticationFailureHandler); | ||
33 | + } | ||
34 | + | ||
35 | + @Override | ||
36 | + public Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response) throws AuthenticationException { | ||
37 | + if (request.getContentType() == null || !request.getContentType().contains("application/x-www-form-urlencoded")) { | ||
38 | + throw new AuthenticationServiceException("请求头类型不支持: " + request.getContentType()); | ||
39 | + } | ||
40 | + | ||
41 | + UsernamePasswordAuthenticationToken authRequest; | ||
42 | + try { | ||
43 | + String loginUserName = request.getParameter("username"); | ||
44 | + String loginUserPass = request.getParameter("password"); | ||
45 | + authRequest = new UsernamePasswordAuthenticationToken(loginUserName,loginUserPass, null); | ||
46 | + authRequest.setDetails(authenticationDetailsSource.buildDetails(request)); | ||
47 | + } catch (Exception e) { | ||
48 | + throw new AuthenticationServiceException(e.getMessage()); | ||
49 | + } | ||
50 | + return this.getAuthenticationManager().authenticate(authRequest); | ||
51 | + } | ||
52 | +} |
src/main/java/com/tianbo/warehouse/security/handel/kakologin/MyLoginAuthenticationProvider.java
0 → 100644
1 | +package com.tianbo.warehouse.security.handel.kakologin; | ||
2 | + | ||
3 | +import com.tianbo.warehouse.dao.KakoUserMapper; | ||
4 | +import com.tianbo.warehouse.model.KakoUser; | ||
5 | +import com.tianbo.warehouse.model.USERS; | ||
6 | +import com.tianbo.warehouse.security.CustomUserDetailService; | ||
7 | +import com.tianbo.warehouse.service.UserService; | ||
8 | +import com.tianbo.warehouse.util.RedisUtils; | ||
9 | +import org.apache.shiro.codec.CodecException; | ||
10 | +import org.apache.shiro.crypto.hash.Hash; | ||
11 | +import org.apache.shiro.crypto.hash.SimpleHash; | ||
12 | +import org.apache.shiro.util.ByteSource; | ||
13 | +import org.springframework.beans.factory.annotation.Autowired; | ||
14 | +import org.springframework.security.authentication.AuthenticationProvider; | ||
15 | +import org.springframework.security.authentication.BadCredentialsException; | ||
16 | +import org.springframework.security.authentication.DisabledException; | ||
17 | +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; | ||
18 | +import org.springframework.security.core.Authentication; | ||
19 | +import org.springframework.security.core.AuthenticationException; | ||
20 | +import org.springframework.security.core.userdetails.UserDetails; | ||
21 | +import org.springframework.stereotype.Component; | ||
22 | + | ||
23 | +import java.io.File; | ||
24 | +import java.io.InputStream; | ||
25 | +import java.util.Arrays; | ||
26 | + | ||
27 | +import org.apache.shiro.codec.CodecSupport; | ||
28 | + | ||
29 | +import javax.annotation.Resource; | ||
30 | + | ||
31 | +/** | ||
32 | + * 自定义认证处理类 | ||
33 | + */ | ||
34 | +@Component | ||
35 | +public class MyLoginAuthenticationProvider extends CodecSupport implements AuthenticationProvider { | ||
36 | + | ||
37 | + @Autowired | ||
38 | + private KakoUserDetailService userDetailsService; | ||
39 | + | ||
40 | + @Resource | ||
41 | + private KakoUserMapper userMapper; | ||
42 | + | ||
43 | + @Autowired | ||
44 | + private RedisUtils redisUtils; | ||
45 | + | ||
46 | + @Override | ||
47 | + public Authentication authenticate(Authentication authentication) throws AuthenticationException { | ||
48 | + // 获取前端表单中输入后返回的用户名、密码 | ||
49 | + String userName = (String) authentication.getPrincipal(); | ||
50 | + String password = (String) authentication.getCredentials(); | ||
51 | + | ||
52 | + UserDetails userInfo = userDetailsService.loadUserByUsername(userName); | ||
53 | + | ||
54 | + | ||
55 | + //验证登录密码是否符合规则,如位数包含的字符等 | ||
56 | + boolean isValid = PasswordSaltUtils.isValidPassword(password, userInfo.getPassword(), ""); | ||
57 | + // 验证密码 | ||
58 | + if (!isValid) { | ||
59 | + //todo: 登录次数超了 锁定账户 | ||
60 | + throw new BadCredentialsException("密码错误!"); | ||
61 | + } | ||
62 | + if(!userInfo.isEnabled()){ | ||
63 | + throw new DisabledException("用户被禁用"); | ||
64 | + } | ||
65 | + | ||
66 | + //取盐规则 | ||
67 | + byte[] salt = PasswordSaltUtils.getSalt16(userInfo.getPassword()); | ||
68 | + //真实密码 | ||
69 | + String realPass = PasswordSaltUtils.getPassword16(userInfo.getPassword()); | ||
70 | + //用户登录密码与盐运算 | ||
71 | + Object tokenHashedCredentials = this.hashProvidedCredentials(password,salt,1024); | ||
72 | + | ||
73 | + try{ | ||
74 | + String loginUserLock = redisUtils.get(userName+"-lock"); | ||
75 | + Integer loginUserLockNO= 0; | ||
76 | + if (loginUserLock!=null){ | ||
77 | + loginUserLockNO = Integer.valueOf(loginUserLock); | ||
78 | + } | ||
79 | + //判断密码是否正确 | ||
80 | + if(!equals(realPass,tokenHashedCredentials.toString())){ | ||
81 | + redisUtils.set(userName+"-lock", String.valueOf(++loginUserLockNO),120); | ||
82 | + | ||
83 | + //两分钟内错误登录次数超过5次锁定账户 | ||
84 | + if (loginUserLockNO>5){ | ||
85 | + KakoUser kakoUser = new KakoUser(); | ||
86 | + kakoUser.setLoginName(userName); | ||
87 | + kakoUser.setLoginFlag("0"); | ||
88 | + userMapper.lockUser(kakoUser); | ||
89 | + } | ||
90 | + return null; | ||
91 | + } | ||
92 | + }catch (Exception e){ | ||
93 | + throw new BadCredentialsException("验证失败!"); | ||
94 | + } | ||
95 | + | ||
96 | + | ||
97 | + // 前后端分离情况下 处理逻辑... | ||
98 | + // 更新登录令牌 - 之后访问系统其它接口直接通过token认证用户权限... | ||
99 | + return new UsernamePasswordAuthenticationToken(userInfo, password, userInfo.getAuthorities()); | ||
100 | + } | ||
101 | + | ||
102 | + @Override | ||
103 | + public boolean supports(Class<?> aClass) { | ||
104 | + return true; | ||
105 | + } | ||
106 | + | ||
107 | + /** | ||
108 | + * 根据用户密码生成秘文 | ||
109 | + * @param credentials 用户登录密码 | ||
110 | + * @param salt 盐 | ||
111 | + * @param hashIterations 1024 | ||
112 | + * @return | ||
113 | + */ | ||
114 | + protected Hash hashProvidedCredentials(Object credentials, Object salt, int hashIterations) { | ||
115 | + String hashAlgorithmName = "SHA-1"; | ||
116 | + hashIterations = 1024; | ||
117 | + return new SimpleHash(hashAlgorithmName, credentials, salt, hashIterations); | ||
118 | + } | ||
119 | + | ||
120 | + protected boolean equals(Object tokenCredentials, Object accountCredentials) { | ||
121 | + | ||
122 | + if (this.isByteSource(tokenCredentials) && this.isByteSource(accountCredentials)) { | ||
123 | + | ||
124 | + byte[] tokenBytes = this.toBytes(tokenCredentials); | ||
125 | + byte[] accountBytes = this.toBytes(accountCredentials); | ||
126 | + return Arrays.equals(tokenBytes, accountBytes); | ||
127 | + } else { | ||
128 | + return accountCredentials.equals(tokenCredentials); | ||
129 | + } | ||
130 | + } | ||
131 | +} |
1 | +package com.tianbo.warehouse.security.handel.kakologin; | ||
2 | + | ||
3 | +import org.springframework.stereotype.Component; | ||
4 | + | ||
5 | +@Component | ||
6 | +public class PasswordSaltUtils { | ||
7 | + | ||
8 | + /** | ||
9 | + * 密码校验 | ||
10 | + * @return true密码校验通过 false 失败 | ||
11 | + */ | ||
12 | + public static boolean isValidPassword(String LoginPassword, String UserPassword, String Salt){ | ||
13 | + return true; | ||
14 | + } | ||
15 | + | ||
16 | + /** | ||
17 | + * 加密前端传递过来的密码 | ||
18 | + * @param Salt 盐 | ||
19 | + * @param SaltFromDB 数据库中保存的盐 | ||
20 | + * @return | ||
21 | + */ | ||
22 | + public static String encodePassword(String Salt,String SaltFromDB){ | ||
23 | + return null; | ||
24 | + } | ||
25 | + | ||
26 | + /** | ||
27 | + * 解码存储到数据库中密码密文的前16位 | ||
28 | + * @param userPasswordInDB 数据库中用户的密码 | ||
29 | + * @return | ||
30 | + */ | ||
31 | + public static byte[] getSalt16(String userPasswordInDB){ | ||
32 | + byte[] salt = Encodes.decodeHex(userPasswordInDB.substring(0,16)); | ||
33 | + return salt; | ||
34 | + } | ||
35 | + | ||
36 | + /** | ||
37 | + * 取存储到数据库中密码密文的后16位 | ||
38 | + * @param userPasswordInDB 数据库中用户的密码 | ||
39 | + * @return | ||
40 | + */ | ||
41 | + public static String getPassword16(String userPasswordInDB){ | ||
42 | + | ||
43 | + return userPasswordInDB.substring(16); | ||
44 | + } | ||
45 | +} |
@@ -23,6 +23,8 @@ public interface PermissionService { | @@ -23,6 +23,8 @@ public interface PermissionService { | ||
23 | */ | 23 | */ |
24 | Map<String,Object> getUserMenus(Integer userId); | 24 | Map<String,Object> getUserMenus(Integer userId); |
25 | 25 | ||
26 | + Map<String,Object> getUserMenusKako(String userId); | ||
27 | + | ||
26 | 28 | ||
27 | int updateByPrimaryKeySelective(PERMISSION permission); | 29 | int updateByPrimaryKeySelective(PERMISSION permission); |
28 | 30 | ||
@@ -35,6 +37,8 @@ public interface PermissionService { | @@ -35,6 +37,8 @@ public interface PermissionService { | ||
35 | */ | 37 | */ |
36 | List<PERMISSION> findByUserIdWithLogin(Integer userId); | 38 | List<PERMISSION> findByUserIdWithLogin(Integer userId); |
37 | 39 | ||
40 | + List<PERMISSION> findByUserIdWithLoginKako(String userId); | ||
41 | + | ||
38 | /** | 42 | /** |
39 | * 清理跟permission相关的所有缓存 | 43 | * 清理跟permission相关的所有缓存 |
40 | */ | 44 | */ |
@@ -69,6 +69,10 @@ public class PermissionServiceImp implements PermissionService { | @@ -69,6 +69,10 @@ public class PermissionServiceImp implements PermissionService { | ||
69 | return permissionMapper.findByUserIdWithLogin(userId); | 69 | return permissionMapper.findByUserIdWithLogin(userId); |
70 | } | 70 | } |
71 | 71 | ||
72 | + @Override | ||
73 | + public List<PERMISSION> findByUserIdWithLoginKako(String userId){ | ||
74 | + return permissionMapper.findByUserIdWithLoginKako(userId); | ||
75 | + } | ||
72 | /** | 76 | /** |
73 | * 返回用户权限的树形列表 | 77 | * 返回用户权限的树形列表 |
74 | * @param userId | 78 | * @param userId |
@@ -111,6 +115,43 @@ public class PermissionServiceImp implements PermissionService { | @@ -111,6 +115,43 @@ public class PermissionServiceImp implements PermissionService { | ||
111 | } | 115 | } |
112 | } | 116 | } |
113 | 117 | ||
118 | + @Override | ||
119 | + public Map<String, Object> getUserMenusKako(String userId) { | ||
120 | + Map<String, Object> data = new HashMap<String, Object>(); | ||
121 | + try { | ||
122 | + //查询所有菜单 | ||
123 | + List<PERMISSION> allMenu = permissionMapper.findByUserIdKako(userId); | ||
124 | +// //根节点 | ||
125 | +// List<PERMISSION> rootMenu = new ArrayList<PERMISSION>(); | ||
126 | +// for (PERMISSION nav : allMenu) { | ||
127 | +// if (nav.getParentId() == 0) {//父节点是0的,为根节点。 | ||
128 | +// rootMenu.add(nav); | ||
129 | +// } | ||
130 | +// } | ||
131 | + | ||
132 | + /* 根据Menu类的order排序 */ | ||
133 | +// Collections.sort(rootMenu, order()); | ||
134 | + //为根菜单设置子菜单,getClild是递归调用的 | ||
135 | +// for (PERMISSION nav : rootMenu) { | ||
136 | +// /* 获取根节点下的所有子节点 使用getChild方法*/ | ||
137 | +// List<PERMISSION> childList = getChild(nav.getPermissionId(), allMenu); | ||
138 | +// nav.setChildren(childList);//给根节点设置子节点 | ||
139 | +// } | ||
140 | + /** | ||
141 | + * 输出构建好的菜单数据。 | ||
142 | + * | ||
143 | + */ | ||
144 | + data.put("success", "true"); | ||
145 | + data.put("list", allMenu); | ||
146 | + return data; | ||
147 | + } catch (Exception e) { | ||
148 | + data.put("success", "false"); | ||
149 | + data.put("list", new ArrayList()); | ||
150 | + return data; | ||
151 | + } | ||
152 | + } | ||
153 | + | ||
154 | + | ||
114 | /** | 155 | /** |
115 | * 获取子节点 | 156 | * 获取子节点 |
116 | * | 157 | * |
1 | +package com.tianbo.warehouse.service.kakoImp; | ||
2 | + | ||
3 | +import com.github.pagehelper.PageInfo; | ||
4 | +import com.tianbo.warehouse.dao.KakoUserMapper; | ||
5 | +import com.tianbo.warehouse.dao.ROLEMapper; | ||
6 | +import com.tianbo.warehouse.model.*; | ||
7 | +import com.tianbo.warehouse.service.PermissionService; | ||
8 | +import com.tianbo.warehouse.service.UserService; | ||
9 | +import org.springframework.beans.factory.annotation.Autowired; | ||
10 | +import org.springframework.stereotype.Service; | ||
11 | + | ||
12 | +import javax.annotation.Resource; | ||
13 | +import java.util.List; | ||
14 | + | ||
15 | +@Service | ||
16 | +public class KakoUserServiceImpl implements KakoUserService{ | ||
17 | + | ||
18 | + @Resource | ||
19 | + private KakoUserMapper kakoUserMapper; | ||
20 | + | ||
21 | + @Autowired | ||
22 | + private PermissionService permissionService; | ||
23 | + | ||
24 | + @Resource | ||
25 | + private ROLEMapper roleMapper; | ||
26 | + | ||
27 | + @Override | ||
28 | + public KakoUser loadByUsername(String username){ | ||
29 | + List<KakoUser> userList = kakoUserMapper.selectByUsername(username); | ||
30 | + if (userList != null && userList.size() > 0) { | ||
31 | + KakoUser user = userList.get(0); | ||
32 | + | ||
33 | + List<PERMISSION> permissionList = permissionService.findByUserIdWithLoginKako(user.getId()); | ||
34 | + if (permissionList!=null && permissionList.size()>0){ | ||
35 | + user.setPermissions(permissionList); | ||
36 | + } | ||
37 | + | ||
38 | + List<ROLE> roleList = roleMapper.findRolesByUserIdKako(user.getId()); | ||
39 | + if (roleList!=null && roleList.size()>0){ | ||
40 | + user.setRoles(roleList); | ||
41 | + } | ||
42 | + return user; | ||
43 | + } | ||
44 | + return null; | ||
45 | + } | ||
46 | + | ||
47 | +} |
@@ -14,7 +14,7 @@ | @@ -14,7 +14,7 @@ | ||
14 | </commentGenerator> | 14 | </commentGenerator> |
15 | <!--数据库链接URL,用户名、密码 --> | 15 | <!--数据库链接URL,用户名、密码 --> |
16 | <jdbcConnection driverClass="com.mysql.jdbc.Driver" | 16 | <jdbcConnection driverClass="com.mysql.jdbc.Driver" |
17 | - connectionURL="jdbc:mysql://118.31.66.166:3306/statistics" | 17 | + connectionURL="jdbc:mysql://118.31.66.166:3306/station" |
18 | userId="110" | 18 | userId="110" |
19 | password="QAHqCJf2kFYCLirM"> | 19 | password="QAHqCJf2kFYCLirM"> |
20 | </jdbcConnection> | 20 | </jdbcConnection> |
@@ -45,6 +45,6 @@ | @@ -45,6 +45,6 @@ | ||
45 | <property name="enableSubPackages" value="true"/> | 45 | <property name="enableSubPackages" value="true"/> |
46 | </javaClientGenerator> | 46 | </javaClientGenerator> |
47 | <!-- 要生成的表 tableName是数据库中的表名或视图名 domainObjectName是实体类名--> | 47 | <!-- 要生成的表 tableName是数据库中的表名或视图名 domainObjectName是实体类名--> |
48 | - <table tableName="role" domainObjectName="ROLE" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table> | 48 | + <table tableName="sys_user" domainObjectName="KakoUser" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table> |
49 | </context> | 49 | </context> |
50 | </generatorConfiguration> | 50 | </generatorConfiguration> |
@@ -140,6 +140,37 @@ where P.url = #{permissionUrl,jdbcType=VARCHAR} ORDER BY permission_order | @@ -140,6 +140,37 @@ where P.url = #{permissionUrl,jdbcType=VARCHAR} ORDER BY permission_order | ||
140 | AND P.parent_id = 0 | 140 | AND P.parent_id = 0 |
141 | ORDER BY permission_order | 141 | ORDER BY permission_order |
142 | </select> | 142 | </select> |
143 | + <select id="findByUserIdKako" parameterType="java.lang.String" resultMap="treeResultMap"> | ||
144 | + SELECT | ||
145 | + P.* | ||
146 | + FROM | ||
147 | + permission P | ||
148 | + WHERE | ||
149 | + P.permission_id IN ( | ||
150 | + SELECT | ||
151 | + RP.permission_id | ||
152 | + FROM | ||
153 | + role_permission RP | ||
154 | + WHERE | ||
155 | + RP.role_id IN ( | ||
156 | + SELECT | ||
157 | + R.role_id | ||
158 | + FROM | ||
159 | + role R | ||
160 | + WHERE | ||
161 | + R.role_id IN ( | ||
162 | + SELECT | ||
163 | + UR.role_id | ||
164 | + FROM | ||
165 | + user_role UR | ||
166 | + WHERE | ||
167 | + UR.user_id = #{userId,jdbcType=VARCHAR} | ||
168 | + ) | ||
169 | + ) | ||
170 | + ) | ||
171 | + AND P.parent_id = 0 | ||
172 | + ORDER BY permission_order | ||
173 | + </select> | ||
143 | <select id="findByUserIdWithLogin" parameterType="java.lang.Integer" resultMap="BaseResultMap"> | 174 | <select id="findByUserIdWithLogin" parameterType="java.lang.Integer" resultMap="BaseResultMap"> |
144 | SELECT | 175 | SELECT |
145 | P.* | 176 | P.* |
@@ -170,6 +201,36 @@ where P.url = #{permissionUrl,jdbcType=VARCHAR} ORDER BY permission_order | @@ -170,6 +201,36 @@ where P.url = #{permissionUrl,jdbcType=VARCHAR} ORDER BY permission_order | ||
170 | ) | 201 | ) |
171 | ORDER BY permission_order | 202 | ORDER BY permission_order |
172 | </select> | 203 | </select> |
204 | + <select id="findByUserIdWithLoginKako" parameterType="java.lang.String" resultMap="BaseResultMap"> | ||
205 | + SELECT | ||
206 | + P.* | ||
207 | + FROM | ||
208 | + permission P | ||
209 | + WHERE | ||
210 | + P.permission_id IN ( | ||
211 | + SELECT | ||
212 | + RP.permission_id | ||
213 | + FROM | ||
214 | + role_permission RP | ||
215 | + WHERE | ||
216 | + RP.role_id IN ( | ||
217 | + SELECT | ||
218 | + R.role_id | ||
219 | + FROM | ||
220 | + role R | ||
221 | + WHERE | ||
222 | + R.role_id IN ( | ||
223 | + SELECT | ||
224 | + UR.role_id | ||
225 | + FROM | ||
226 | + user_role UR | ||
227 | + WHERE | ||
228 | + UR.user_id = #{userId,jdbcType=VARCHAR} | ||
229 | + ) | ||
230 | + ) | ||
231 | + ) | ||
232 | + ORDER BY permission_order | ||
233 | + </select> | ||
173 | <select id="findByRoleId" resultMap="BaseResultMap" parameterType="integer"> | 234 | <select id="findByRoleId" resultMap="BaseResultMap" parameterType="integer"> |
174 | SELECT | 235 | SELECT |
175 | P.* | 236 | P.* |
@@ -192,4 +192,14 @@ | @@ -192,4 +192,14 @@ | ||
192 | LEFT JOIN role R ON R.role_id= UR.role_id | 192 | LEFT JOIN role R ON R.role_id= UR.role_id |
193 | where U.user_id = #{userId,jdbcType=INTEGER} | 193 | where U.user_id = #{userId,jdbcType=INTEGER} |
194 | </select> | 194 | </select> |
195 | + | ||
196 | + <select id="findRolesByUserIdKako" parameterType="java.lang.String" resultMap="BaseResultMap"> | ||
197 | + SELECT | ||
198 | + R.* | ||
199 | + FROM | ||
200 | + sys_user U | ||
201 | + LEFT JOIN user_role UR ON U.id = UR.user_id | ||
202 | + LEFT JOIN role R ON R.role_id= UR.role_id | ||
203 | + where U.id = #{userId,jdbcType=VARCHAR} | ||
204 | + </select> | ||
195 | </mapper> | 205 | </mapper> |
-
请 注册 或 登录 后发表评论