去掉shiro登录时url里的JSESSIONID

来源:互联网 发布:excel怎么复制所有数据 编辑:程序博客网 时间:2024/05/20 13:04
看别人博客写的 主要是类型转换出错的   SecurityManager securityManager = getSecurityManager(); 下面已标红 
package com.shiro.filter;import org.apache.shiro.web.servlet.ShiroHttpServletRequest;import org.apache.shiro.web.servlet.ShiroHttpServletResponse;import javax.servlet.ServletContext;import javax.servlet.http.HttpServletResponse;/** * @author Yang * @create 2017-12-11 15:06 * 描述: */public class MyShiroHttpServletResponse extends ShiroHttpServletResponse {    public MyShiroHttpServletResponse(HttpServletResponse wrapped, ServletContext context, ShiroHttpServletRequest request) {        super(wrapped, context, request);    }    @Override    protected String toEncoded(String url, String sessionId) {        if ((url == null) || (sessionId == null))            return (url);        String path = url;        String query = "";        String anchor = "";        int question = url.indexOf('?');        if (question >= 0) {            path = url.substring(0, question);            query = url.substring(question);        }        int pound = path.indexOf('#');        if (pound >= 0) {            anchor = path.substring(pound);            path = path.substring(0, pound);        }        StringBuilder sb = new StringBuilder(path);        //重写toEncoded方法,注释掉这几行代码就不会再生成JESSIONID了。        //        if (sb.length() > 0) { // session id param can't be first.        //            sb.append(";");        //            sb.append(DEFAULT_SESSION_ID_PARAMETER_NAME);        //            sb.append("=");        //            sb.append(sessionId);        //        }        sb.append(anchor);        sb.append(query);        return (sb.toString());    }

}

package com.shiro.filter;import org.apache.shiro.mgt.SecurityManager;import org.apache.shiro.spring.web.ShiroFilterFactoryBean;import org.apache.shiro.web.filter.mgt.FilterChainManager;import org.apache.shiro.web.filter.mgt.FilterChainResolver;import org.apache.shiro.web.filter.mgt.PathMatchingFilterChainResolver;import org.apache.shiro.web.mgt.WebSecurityManager;import org.apache.shiro.web.servlet.AbstractShiroFilter;import org.apache.shiro.web.servlet.ShiroHttpServletRequest;import org.springframework.beans.factory.BeanInitializationException;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletResponse;/** * @author Yang * @create 2017-12-11 15:08 * 描述: */public class MyShiroFilterFactoryBean extends ShiroFilterFactoryBean {    @Override    public Class getObjectType() {        return MySpringShiroFilter.class;    }    @Override    public SecurityManager getSecurityManager() {        return super.getSecurityManager();    }    @Override    protected AbstractShiroFilter createInstance() throws Exception {        SecurityManager securityManager = getSecurityManager();        if (securityManager == null) {            String msg = "SecurityManager property must be set.";            throw new BeanInitializationException(msg);        }        if (!(securityManager instanceof WebSecurityManager)) {            String msg = "The security manager does not implement the WebSecurityManager interface.";            throw new BeanInitializationException(msg);        }        FilterChainManager manager = createFilterChainManager();        PathMatchingFilterChainResolver chainResolver = new PathMatchingFilterChainResolver();        chainResolver.setFilterChainManager(manager);        return new MySpringShiroFilter((WebSecurityManager) securityManager, chainResolver);    }    private static final class MySpringShiroFilter extends AbstractShiroFilter {        protected MySpringShiroFilter(WebSecurityManager webSecurityManager, FilterChainResolver resolver) {            super();            if (webSecurityManager == null) {                throw new IllegalArgumentException("WebSecurityManager property cannot be null.");            }            setSecurityManager(webSecurityManager);            if (resolver != null) {                setFilterChainResolver(resolver);            }        }        @Override        protected ServletResponse wrapServletResponse(HttpServletResponse orig, ShiroHttpServletRequest request) {            return new MyShiroHttpServletResponse(orig, getServletContext(), request);        }    }}

<!--<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">--><bean id="shiroFilter" class="com.shiro.filter.MyShiroFilterFactoryBean">    <!-- 权限管理器 -->    <property name="securityManager" ref="securityManager"/>

...

</bean>





原创粉丝点击