手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

springboot整合shiro定义用户认证授权微服务

时间:2024-10-11 21:45:20

1、所谓的用户微服务指的是要求在“microboot-shiro-member-provider”里面进行实禊耗髻编现,改服务之中需要考虑如下的几点:1、该服务需要进行数据库的开发,所以一定要进行数据库连接池的配置。2、既然要进行微服务的编写,那么就一定需要提供有业务接口以及DAO实现子类,现在的实现将依靠Mybatis完成。3、所有的微服务最终要通过控制器的Rest进行发布处理。【microboot-shiro-member-provider】配置druid数据库连接池;需要修改pom.xml配置文件,为项目的整合添加相关的支持包;<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>SpringBoot</artifactId> <groupId>com.gwolf</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <groupId>com.gwolf</groupId> <artifactId>microboot-shiro-member-provider</artifactId> <packaging>jar</packaging> <name>microboot-member-provider</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>com.gwolf</groupId> <artifactId>microboot-shiro-api</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>springloaded</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.0.4</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.0</version> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.0</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <scope>test</scope> </dependency> </dependencies></project>

springboot整合shiro定义用户认证授权微服务

2、【microboot-shiro-member-provider】建立几个DAO接口:提供用户认证的DAO接口:IMemberDAO;package com.gwolf.dao;import com.gwolf.vo.Member;import org.apache.ibatis.annotations.Mapper;@Mapperpublic interface IMemberDAO { public Member findById(String mid);}

3、提供角色检测的IRoleDAO接口:package com.gwolf.dao;import org.apache.ibatis.annotations.Mapper;import java.util.Set;@Mapperpublic interface IRoleDAO { public Set<String> findAllRoleByMember(String mid);}

springboot整合shiro定义用户认证授权微服务

4、提供所有权限检测的IActionDAO接口:package com.gwolf.dao;import org.apache.ibatis.annotations.Mapper;import java.util.Set;@Mapperpublic interface IActionDAO { public Set<String> findAllActionByMember(String mid);}

springboot整合shiro定义用户认证授权微服务

5、【microboot-shiro-member-provider】将mybatis的配置文件拷贝到项目的"src/main/resources"下:<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration> <!-- 进行Mybatis的相应的环境的属性定义 --> <settings> <!-- 在本项目之中开启二级缓存 --> <setting name="cacheEnabled" value="true"/> </settings></configuration>

springboot整合shiro定义用户认证授权微服务

6、配置mybatis/mapper/com/gwolf/MemberMapper.xml配置文件:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.gwolf.dao.IMemberDAO"> <!-- 根据身份信息取得密码进行认证 --> <select id="findById" parameterType="String" resultType="Member"> select mid,password,name from member where mid=#{mid} </select></mapper>

springboot整合shiro定义用户认证授权微服务

7、配置mybatis/mapper/com/gwolf/RoleMapper.xml配置文件:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.gwolf.dao.IRoleDAO"> <select id="findAllRoleByMember" parameterType="String" resultType="String"> select flag from role where rid in (select rid from member_role where mid=#{mid}) </select></mapper>

springboot整合shiro定义用户认证授权微服务

8、配置mybatis/mapper/com/gwolf/ActionMapper.xml配置文件:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.gwolf.dao.IActionDAO"> <select id="findAllActionByMember" parameterType="String" resultType="String"> select flag from action where actid in (select actid from role_action where rid in(select rid from member_role where mid=#{mid})) </select></mapper>

springboot整合shiro定义用户认证授权微服务

9、【microboot-shiro-member-provider】修改application.yml配置文件:server: port: 8080spring: messages: basename: i18n/Message,i18n/Pages #资源文件的名称 datasource: #配置当前要使用的数据源的操作类型 type: com.alibaba.druid.pool.DruidDataSource driver-class-name: org.gjt.mm.mysql.Driver url: jdbc:mysql://localhost:3306/shirodb username: root password: root filters: stat,wall,log4j dbcp2: min-idle: 5 initial-size: 5 max-total: 5 max-wait-millis: 200mybatis: config-location: classpath:mybatis/mybatis.cfg.xml type-aliases-package: com.gwolf.vo mapper-locations: - classpath:mybatis/mapper/**/*.xml

springboot整合shiro定义用户认证授权微服务

10、【microboot-shiro-member-provider】定义IMemberService业务接口:package 艘早祓胂com.gwolf.service.impl;import com.gwolf.dao.IActionDAO;import com.gwolf.dao.IMemberDAO;import com.gwolf.dao.IRoleDAO;import com.gwolf.service.IMemberService;import com.gwolf.vo.Member;import org.springframework.stereotype.Service;import javax.annotation.Resource;import java.util.HashMap;import java.util.Map;import java.util.Set;@Servicepublic class MemberServiceImpl implements IMemberService{ @Resource private IMemberDAO memberDAO; @Resource private IRoleDAO roleDAO; @Resource private IActionDAO actionDAO; @Override public Member get(String mid) throws Exception { return this.memberDAO.findById(mid); } @Override public Map<String, Set<String>> listAuthByMember(String mid) throws Exception { Map<String,Set<String>> map = new HashMap<String,Set<String>>(); map.put("allRoles", this.roleDAO.findAllRoleByMember(mid)); map.put("allActions", this.actionDAO.findAllActionByMember(mid)); return map; }}

springboot整合shiro定义用户认证授权微服务

11、【microboot-shiro-member-provider】编写业务层功能测试代码类:package com.gwolf.test;import com.gwolf.StartSpringBootMain;import com.gwolf.service.IDeptService;import com.gwolf.service.IMemberService;import com.gwolf.vo.Dept;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import org.springframework.test.context.web.WebAppConfiguration;import javax.annotation.Resource;@SpringBootTest(classes = StartSpringBootMain.class)@RunWith(SpringJUnit4ClassRunner.class)@WebAppConfigurationpublic class TestMemberService { @Resource private IMemberService memberService; @Test public void testGet() throws Exception{ System.out.print(memberService.get("admin")); } @Test public void testAuth() throws Exception{ System.out.print(memberService.listAuthByMember("admin")); }}

springboot整合shiro定义用户认证授权微服务

12、【microboot-shiro-member-provider】进行控制层编写,控制层现在给出的一定是Rest服务:pac娱浣嫁装kage com.gwolf.controller;import com.gwolf.service.IMemberService;import com.gwolf.util.controller.AbstractBaseController;import com.gwolf.vo.Member;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.stereotype.Service;import org.springframework.validation.BindingResult;import org.springframework.validation.ObjectError;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.ResponseBody;import javax.validation.Valid;import java.util.Iterator;@Controllerpublic class MemberController extends AbstractBaseController{ @Autowired private IMemberService memberService; @RequestMapping(value="/member/get", method = RequestMethod.POST) @ResponseBody public Object get(String mid) { try { return this.memberService.get(mid); } catch (Exception e) { e.printStackTrace(); } return null; } @RequestMapping(value="/member/auth", method = RequestMethod.POST) @ResponseBody public Object auth(String mid) { try { return this.memberService.listAuthByMember(mid); } catch (Exception e) { e.printStackTrace(); } return null; }}

springboot整合shiro定义用户认证授权微服务

13、【microboot-shiro-member-provider】编写控制层测试,如果要访问Rest服务肯定要使用RestT髫潋啜缅emplate完成,这个类为了简单使用,直接进行对象实例化处理。package com.gwolf.test;import com.gwolf.StartMemberSpringBootMain;import com.gwolf.vo.Member;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import org.springframework.test.context.web.WebAppConfiguration;import org.springframework.web.client.RestTemplate;import java.util.HashSet;import java.util.List;import java.util.Map;import java.util.Set;@SpringBootTest(classes = StartMemberSpringBootMain.class)@RunWith(SpringJUnit4ClassRunner.class)@WebAppConfigurationpublic class TestMemberController { private RestTemplate restTemplate = new RestTemplate(); @Test public void testGet() throws Exception{ Member member = restTemplate.postForObject("http://localhost:8080/member/get?mid=admin", null, Member.class); System.out.println(member); } @Test public void testAuth() throws Exception{ Map<String,Object> map = restTemplate.postForObject("http://localhost:8080/member/auth?mid=admin", null, Map.class); Set<String> allRoles = new HashSet<String>(); allRoles.addAll((List<String>)map.get("allRoles")); System.out.println(map); }}

springboot整合shiro定义用户认证授权微服务

14、那么此时一个专门进行用户认证以及授权检测的微服务实现开发完成了。

© 手抄报圈