springboot整合shiro定义用户认证授权微服务
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>

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);}

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>

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>

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; }}

12、【microboot-shiro-member-provider】进行控制层编写,控制层现在给出的一定是Rest服务:package 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; }}

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