zoukankan      html  css  js  c++  java
  • 【Shiro】调用doGetAuthenticationInfo进行认证成功之后,isAuthenticated是false的问题。

    原文链接:https://tidyko.com/posts/b014d2be.html

    使用@Configuration配置shiro无状态登录时出现的问题,在subject.login之后当前线程重新绑定了一个假定subject,isAuthenticated。

    这里自定义的访问拦截器的创建需要放在shiroFilter之后,如下:

     /**
      * Shiro 的 Web 过滤器链
      */
    @Bean("shiroFilter")
    public ShiroFilterFactoryBean shiroFilter() {
        ShiroFilterFactoryBean filter = new ShiroFilterFactoryBean();
        filter.setSecurityManager(securityManager());
    
        Map<String, Filter> filters = new LinkedHashMap<String, Filter>();
        // 无状态授权器
        filters.put("statelessAuthc", statelessAuthcFilter());
        filter.setFilters(filters);
    
        /**
         * 配置shiro拦截器链
         */
        // filterChainDefinitionMap 必须是 LinkedHashMap 因为它必须保证有序
        Map<String, String> chain = new LinkedHashMap<String, String>();
        // anon-表示可以匿名访问, authc-表示需要认证才可以访问
        // 因为禁用了 Session,所以这里不能使用 authc 了,否则会报 DisabledSessionException 异常
        chain.put("/services/*", "statelessAuthc");
        chain.put("/**", "anon");
        filter.setFilterChainDefinitionMap(chain);
        return filter;
    }
        
    // 访问控制过滤器
    // <bean id="authcFilter" class="cn.tisson.upms.client.shiro.filter.StatelessAccessControlFilter"/>
    
    @Bean
    public AccessControlFilter statelessAuthcFilter() {
        return new StatelessAccessControlFilter();
    }
    

      

    如果使用xml配置是不需要注意前后位置的

    <bean id="statelessAuthcFilter" class="cn.tisson.upms.client.shiro.filter.UpmsStatelessAuthcFilter"/>
    
    <!-- Shiro的Web过滤器 -->
    <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
        <property name="securityManager" ref="securityManager"/>
        <property name="filters">
            <util:map>
                <entry key="statelessAuthc" value-ref="statelessAuthcFilter"/>
            </util:map>
        </property>
        <property name="filterChainDefinitions">
            <value>
                /services/*=statelessAuthc
                /**=anon
            </value>
        </property>
    </bean>
    

    以此备注。

  • 相关阅读:
    wpf 资源
    九宫格扩展,输入一个奇数,得到横竖斜相加相等结果
    安装IIS的convlog.exe问题
    Windows API
    使用快捷键弹出新对话框
    数据结构笔试(转)
    运算符重载
    宽字节与多字节转换
    C++之乱七八糟<真正的随笔>
    MFC调用ActiveX
  • 原文地址:https://www.cnblogs.com/zengweiming/p/7649211.html
Copyright © 2011-2022 走看看