Shiro-SpringBoot

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Shiro-SpringBoot相关的知识,希望对你有一定的参考价值。

1.配置加载库: pom.xml

2.创建模型

3.创建数据库查询:

接口<interface>
服务<service>
sql语句mapper<mapper.xml>
sql调用接口<mapper.interface>

4.配置: application.properties

5.入口文件配置扫描位置

1.配置加载库: pom.xml
<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-core</artifactId>
            <version>1.4.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-spring</artifactId>
            <version>1.4.0</version>
        </dependency>

        <!--数据库相关-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.6</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.2.0</version>
        </dependency>

        <!--工具库-->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.4</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>4.2.3.RELEASE</version>
        </dependency>

        <!--jsp相关配置-->
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
        </dependency>

        <dependency>
            <groupId>org.apache.ibatis</groupId>
            <artifactId>ibatis-core</artifactId>
            <version>3.0</version>
        </dependency>
2.创建模型
2-1.User

import java.util.HashSet;
import java.util.Set;

public class User 
    private Integer uid;
    private String username;
    private String password;
    private Set<Role> roles=new HashSet<>();
    private Set<Permission> permissions=new HashSet<>();

    public Integer getUid() 
        return uid;
    

    public void setUid(Integer uid) 
        this.uid = uid;
    

    public String getUsername() 
        return username;
    

    public void setUsername(String username) 
        this.username = username;
    

    public String getPassword() 
        return password;
    

    public void setPassword(String password) 
        this.password = password;
    

    public Set<Role> getRoles() 
        return roles;
    

    public void setRoles(Set<Role> roles) 
        this.roles = roles;
    

    public Set<Permission> getPermissions() 
        return permissions;
    

    public void setPermissions(Set<Permission> permissions) 
        this.permissions = permissions;
    
2-2.Role

import java.util.HashSet;
import java.util.Set;

public class Role 
    private Integer rid;
    private String rname;
    private Set<Permission> permissions=new HashSet<>();

    public Integer getRid() 
        return rid;
    

    public void setRid(Integer rid) 
        this.rid = rid;
    

    public String getRname() 
        return rname;
    

    public void setRname(String rname) 
        this.rname = rname;
    

    public Set<Permission> getPermissions() 
        return permissions;
    

    public void setPermissions(Set<Permission> permissions) 
        this.permissions = permissions;
    

2-3.Permission

public class Permission 
    private Integer pid;
    private String name;
    private String url;

    public Integer getPid() 
        return pid;
    

    public void setPid(Integer pid) 
        this.pid = pid;
    

    public String getName() 
        return name;
    

    public void setName(String name) 
        this.name = name;
    

    public String getUrl() 
        return url;
    

    public void setUrl(String url) 
        this.url = url;
    

3.创建数据库查询

3-1.UserMapper
public interface UserMapper 
    User findByUsername(@Param("username") String username);

3-2.UserService
public interface UserService 
    User findByUsername(String username);

3-2.UserServiceImpl
@Service
public class UserServiceImpl implements UserService 
    @Resource
    private UserMapper userMapper;

    @Override
    public User findByUsername(String username) 
        return userMapper.findByUsername(username);
    
3-3.UserMapper.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="cn.safi16.springbootshiro.mapper.UserMapper">

    <!-- select 对应的方法结果 -->
    <resultMap id="userMap" type="cn.safi16.springbootshiro.model.User">
        <id property="id" column="id"/>
        <result property="username" column="username"/>
        <result property="password" column="password"/>
        <!--复合结果-->
        <collection property="roles" oftype="cn.safi16.springbootshiro.model.Role">
            <id property="rid" column="rid"/>
            <result property="rname" column="rname"/>
            <!--复合结果-->
            <collection property="permissions" oftype="cn.safi16.springbootshiro.model.Permission">
                <id property="pid" column="pid"/>
                <result property="name" column="name"/>
                <result property="url" column="url"/>
            </collection>
        </collection>
    </resultMap>

    <!--方法执行语句-->
    <select id="findByUsername" property="string" resultMap="userMap">
         SELECT u.*, r.*, p.*
      FROM user u
        INNER JOIN user_role ur on ur.uid = u.uid
        INNER JOIN role r on r.rid = ur.rid
        INNER JOIN permission_role pr on pr.rid = r.rid
        INNER JOIN permission p on pr.pid = p.pid
      WHERE u.username = #username
    </select>

</mapper>

以上是关于Shiro-SpringBoot的主要内容,如果未能解决你的问题,请参考以下文章