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>
    

    以此备注。

  • 相关阅读:
    UIButtonIOS开发
    SharePoint Server 2007 SP1 已发布
    SharePoint 2007 External Binary Storage Component Preview 发布
    WSS 3.0 & MOSS 2007 SDK 1.1
    SharePoint工作流(ASP.NET表单版)教学视频
    Finally...
    Windows SharePoint Services 3.0 "Visual How Tos" 视频系列
    SharePoint 补丁
    在SharePoint Workflow中使用InfoPath Form的几个Tips
    对于Office Open XML文档格式,请发表您的看法
  • 原文地址:https://www.cnblogs.com/zengweiming/p/7649211.html
Copyright © 2011-2022 走看看