`
lihao312
  • 浏览: 483989 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

spring-boot集成shiro

    博客分类:
  • java
阅读更多
引用

项目启动后输入:http://localhost/
该项目中, 增加了对url的拦截URLPermissionsFilter,
用admin/123456,拥有index权限reports未任何权限, lance/123456尚未分配任何权限.


1.Pom依赖
<shiro.version>1.2.5</shiro.version>
<dependency>
    <groupId>org.apache.shiro</groupId>
    <artifactId>shiro-core</artifactId>
    <version>${shiro.version}</version>
</dependency>
<dependency>
    <groupId>org.apache.shiro</groupId>
    <artifactId>shiro-web</artifactId>
    <version>${shiro.version}</version>
</dependency>
<dependency>
    <groupId>org.apache.shiro</groupId>
    <artifactId>shiro-ehcache</artifactId>
    <version>${shiro.version}</version>
</dependency>
<dependency>
    <groupId>org.apache.shiro</groupId>
    <artifactId>shiro-spring</artifactId>
    <version>${shiro.version}</version>
</dependency>
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.3.5.RELEASE</version>
</parent>

2.Shiro配置
@Configuration
public class ShiroConfig {

    /**
     * FilterRegistrationBean
     * @return
     */
    @Bean
    public FilterRegistrationBean filterRegistrationBean() {
        FilterRegistrationBean filterRegistration = new FilterRegistrationBean();
        filterRegistration.setFilter(new DelegatingFilterProxy("shiroFilter")); 
        filterRegistration.setEnabled(true);
        filterRegistration.addUrlPatterns("/*"); 
        filterRegistration.setDispatcherTypes(DispatcherType.REQUEST);
        return filterRegistration;
    }

    /**
     * @see org.apache.shiro.spring.web.ShiroFilterFactoryBean
     * @return
     */
    @Bean(name = "shiroFilter")
    public ShiroFilterFactoryBean shiroFilter(){
        ShiroFilterFactoryBean bean = new ShiroFilterFactoryBean();
        bean.setSecurityManager(securityManager());
        bean.setLoginUrl("/login");
        bean.setUnauthorizedUrl("/unauthor");

        Map<String, Filter>filters = Maps.newHashMap();
        filters.put("perms", urlPermissionsFilter());
        filters.put("anon", new AnonymousFilter());
        bean.setFilters(filters);

        Map<String, String> chains = Maps.newHashMap();
        chains.put("/login", "anon");
        chains.put("/unauthor", "anon");
        chains.put("/logout", "logout");
        chains.put("/base/**", "anon");
        chains.put("/css/**", "anon");
        chains.put("/layer/**", "anon");
        chains.put("/**", "authc,perms");
        bean.setFilterChainDefinitionMap(chains);
        return bean;
    }

    /**
     * @see org.apache.shiro.mgt.SecurityManager
     * @return
     */
    @Bean(name="securityManager")
    public DefaultWebSecurityManager securityManager() {
        DefaultWebSecurityManager manager = new DefaultWebSecurityManager();
        manager.setRealm(userRealm());
        manager.setCacheManager(cacheManager());
        manager.setSessionManager(defaultWebSessionManager());
        return manager;
    }

    /**
     * @see DefaultWebSessionManager
     * @return
     */
    @Bean(name="sessionManager")
    public DefaultWebSessionManager defaultWebSessionManager() {
        DefaultWebSessionManager sessionManager = new DefaultWebSessionManager();
        sessionManager.setCacheManager(cacheManager());
        sessionManager.setGlobalSessionTimeout(1800000);
        sessionManager.setDeleteInvalidSessions(true);
        sessionManager.setSessionValidationSchedulerEnabled(true);
        sessionManager.setDeleteInvalidSessions(true);
        return sessionManager;
    }

    /**
     * @see UserRealm--->AuthorizingRealm
     * @return
     */
    @Bean
    @DependsOn(value="lifecycleBeanPostProcessor")
    public UserRealm userRealm() {
        UserRealm userRealm = new UserRealm();
        userRealm.setCacheManager(cacheManager());
        return userRealm;
    }

    @Bean
    public URLPermissionsFilter urlPermissionsFilter() {
        return new URLPermissionsFilter();
    }

    @Bean
    public EhCacheManager cacheManager() {
        EhCacheManager cacheManager = new EhCacheManager();
        cacheManager.setCacheManagerConfigFile("classpath:ehcache.xml");
        return cacheManager;
    }

    @Bean
    public LifecycleBeanPostProcessor lifecycleBeanPostProcessor() {
        return new LifecycleBeanPostProcessor();
    }
}

3.完整项目参考
https://github.com/leelance/spring-boot-all/tree/master/spring-boot-shiro
2
4
分享到:
评论

相关推荐

    my-spring-boot集成shiro

    &lt;artifactId&gt;shiro-spring &lt;version&gt;1.8.0 &lt;groupId&gt;org.springframework.boot &lt;artifactId&gt;spring-boot-starter-web ``` 2. **配置Shiro**:在`application.properties`文件中,我们可以设置`Shiro`的...

    spring-boot-shiro-demo

    总的来说,"spring-boot-shiro-demo"项目展示了如何在Spring Boot环境中利用Shiro实现动态权限管理、Session共享和单点登录,这些都是企业级应用中必备的安全特性。通过深入研究和实践这个项目,开发者可以更好地...

    spring boot+shiro 权限认证管理案例

    1. 添加依赖:在 Spring Boot 的 `pom.xml` 文件中添加 Shiro 相关的依赖库,如 `shiro-spring-boot-starter`。 2. 配置 Shiro:通过 `application.properties` 或 `application.yml` 文件配置 Shiro,包括 Realm 的...

    spring-boot-examples-master.zip

    spring-boot-examples-master示例程序,与各种框架集成,包括: dockercompose-springboot-mysql-nginx spring-boot-actuator spring-boot-banner spring-boot-docker spring-boot-elasticsearch spring-boot-...

    Spring Boot 集成各种框架 使用案例(spring-boot-rabbitmq、spring-boot-mail)

    Spring Boot 集成各种框架 使用案例(spring-boot-rabbitmq、spring-boot-mail、spring-boot-thymeleaf、spring-boot-shiro)

    spring-boot2.0全新教程实例20例.zip

    - [spring-boot-shiro](https://github.com/ityouknow/spring-boot-examples/tree/master/spring-boot-shiro):Spring Boot 整合 Shiro Rbac 示例 - [spring-boot-file-upload]...

    spring-boot-examples.zip

    在这个名为 "spring-boot-examples.zip" 的压缩包中,包含了多个 Spring Boot 的示例项目,如 spring-boot-shiro、spring-boot-redis、spring-boot-web 和 spring-boot-rabbitmq,这些都是 Spring Boot 集成其他流行...

    spring boot 集成 shiro

    &lt;artifactId&gt;shiro-spring-boot-web-starter &lt;version&gt;1.7.1 ``` 2. **配置 Shiro** 在 Spring Boot 的配置文件 `application.properties` 或 `application.yml` 中,我们可以配置 Shiro 的相关设置,如 ...

    整合mybatis-spring-boot-2.0-shiro-thymeleaf

    在本项目"整合mybatis-spring-boot-2.0-shiro-thymeleaf"中,开发者提供了一个简短但全面的教程,适用于那些刚开始接触这些技术的初学者。这个项目结合了四个关键组件:MyBatis、Spring Boot、Shiro以及Thymeleaf,...

    spring-boot示例项目

    spring boot demo 是一个Spring Boot、Spring Cloud的项目示例,根据市场主流的后端技术,共集成了30+个demo,未来将持续更新。该项目包含helloworld(快速入门)、web(ssh项目快速搭建)、aop(切面编程)、data-redis...

    jeecg-boot 集成Activiti6 后端Java 模块代码

    Jeecg-boot集成了许多流行的技术,如MyBatis Plus、Shiro、JWT等,为开发者构建企业级应用提供了便捷。 接下来,我们来看Activiti6。Activiti6是一个轻量级的流程引擎,遵循BPMN 2.0标准,支持流程建模、执行和监控...

    mybatisplus-spring-boot_mybatis-plus整合_shiro_plus_

    通过以上步骤,我们可以构建出一个集成了 MyBatis-Plus 数据操作、Spring Boot 快速开发和 Shiro 权限管理的高效后台系统。这样的系统不仅易于维护,还能提供稳定和安全的服务。在实际开发中,我们还需要关注性能...

    sping-boot-shiro-jwt-redis-refreshtoken.zip

    在Spring Boot应用中集成Shiro,可以实现用户身份验证、角色授权等功能,提供了一套简洁的API来处理安全相关的逻辑。 **3. JWT** JWT是一种轻量级的身份验证标准,它允许服务器生成一个包含用户信息的令牌,这个...

    jeecgboot集成jeecg-boot-activiti1

    开发者需要对Java、Spring Boot以及前端开发有一定的了解,以便于理解和执行集成步骤。 3. **集成工具**:在集成过程中可能用到的工具有Navicat(用于数据库管理),以及Git(用于获取源码)等。 4. **集成所需...

    spring-boot-shiro:Apache Shiro与Spring Boot的集成

    Apache Shiro与Spring Boot集成 GitHub: : 用法 首先安装到本地仓库。 双向v2.0下为2.0.0版本,主要将Spring Boot升级到2.0.4.RELEASE,Shiro升级到1.4.0 mvn clean install pom.xml &lt; groupId&gt;...

    springboot-shiro

    在SpringBoot项目中集成Shiro,可以充分利用其提供的安全功能,实现用户登录、权限控制等功能。 Shiro的核心概念包括Subject(主体)、Realm(领域)、Session管理和Cryptography(加密)等。Subject代表了系统中的...

    spring-boot.rar

    综上所述,这个项目结合了 Spring Boot、Shiro、Mybatis、FTP 文件上传和 Thymeleaf 等技术,构建了一个包含用户认证、数据库操作、文件上传以及动态网页展示的完整 Web 应用。通过这些组件的组合,可以实现一个高效...

    详解Spring Boot 集成Shiro和CAS

    Spring Boot 集成 Shiro 和 CAS 本文将详细介绍 Spring Boot 集成 Shiro 和 CAS 的知识点,帮助读者了解 Shiro 和 CAS 的概念、使用方法,以及它们在 Spring Boot 中的集成方式。 Shiro 介绍 Shiro 是一个开源的 ...

    shiro-spring-boot-starter:该项目主要利用Spring Boot的自动化配置特性来实现快速的将Shiro集成到SpringBoot应用中

    简介该项目主要利用Spring Boot的自动化配置特性来实现快速的将Shiro集成到SpringBoot应用...增加11种过滤器过滤规则配置功能默认使用开源库org.crazycake:shiro-redis:3.2.2集成redis增加shiro的redis独立配置功能,可

    sping-boot-shiro-jwt-redis.zip

    《Spring Boot整合Shiro、JWT与Redis实现Token自动刷新详解》 在现代Web开发中,安全性和用户体验是两个至关重要的方面。Spring Boot以其强大的功能和便捷的开发体验,已经成为Java后端开发的首选框架。而Shiro和...

Global site tag (gtag.js) - Google Analytics