一分钟完成springcloud 和shiro整合并了解shiro授权流程

本文介绍如何在一分钟内快速在SpringCloud项目中整合Shiro,并详细解析Shiro的授权流程。首先,通过环境搭建引入必要的依赖包,然后编写核心代码,包括Shiro的配置类、自定义Realm和过滤器工厂。自定义Realm用于从数据库获取用户信息进行认证和授权。文章还附带了类图辅助理解,并通过断点演示了授权流程。
摘要由CSDN通过智能技术生成

 

1.环境搭建(主要是在springcloud基础上添加shiro包)

2.完成核心代码编写

  2.0 shiro配置java类(

     主要配置 内容

       安全管理器 SecurityManager;

       过滤器工厂  ShiroFilterFactoryBean(设置自定义过滤器和设置哪些路径是允许匿名访问);

      自定义realm(数据源,从数据库获得真实用户信息(密码权限),并封装成AuthenticationInfo认证信息 和 AuthorizationInfo授         权信息

    自定义拦截器(也用Bean 配置是为了可以在拦截器里可以用@Autowird 获得容器里的bean ,比如UserService)

     题外话:过滤器先于spring容器启动,所以直接@Autowird拿到的对象是空的,所以考虑将过滤器也交给spring管理

 

3.类图

4..断点演示流程

 

1.环境搭建

 pom.xml 文件引入包

<!--shiro-->
<dependency>
    <groupId>org.apache.shiro</groupId>
    <artifactId>shiro-spring</artifactId>
    <version>1.2.1</version>
</dependency>

 

2.核心代码如下

package com.gupaoedu.service.shiro;


import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor;
import org.apache.shiro.mgt.SecurityManager;
import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.servlet.Filter;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;

@Configuration
public class ShiroConfig {
    /**
          * 将自己的验证方法注入容器
          * @prama
          * @return
          * @date 2018/12/5 15:28
          */
    @Bean
    public MyShiroRealm myShiroRealm(){
        MyShiroRealm myShiroRealm = new MyShiroRealm();
        return myShiroRealm;
    }

    /**
      * 权限管理,配置主要的realm的管理认证
      * @prama
      * @return
      * @date 2018/12/5 15:30
      */
    @Bean
    public SecurityManager securityManager() {
    DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
    // 设置realm.
    securityManager.setRealm(myShiroRealm());
    return securityManager;
}

   /**
      * Filter工厂,设置对应的过滤条件和跳转条件
      * @prama
      * @return
      * @date 2018/12/5 16:02
      */
     @Bean
     public ShiroFilterFactoryBean shiroFilterFactoryBean(SecurityManager securityManager) {
         ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
    // 必须设置 SecurityManager
    shiroFilterFactoryBean.setSecurityManager(securityManager);
     // 登录
    shiroFilterFactoryBean.setLoginUrl("/notLogin");
    // 设置无权限时跳转的 ur
    shiroFilterFactoryBean.setUnauthorizedUrl("/notRole");
         // 自定义 OAuth2Filter 过滤器,替代默认的过滤器
         Map<String, Filter> filters = new HashMap<>();
         filters.put("oauth2", oAuth2FilterBean());
         shiroFilterFactoryBean.setFilters(filters);
    // 设置拦截器
     Map<String,String> map = new LinkedHashMap<String, String>();

    // 普通用
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值