フォーラムを検索し、ソースコードの分析を通じて、プラスにShiroHttpServletResponseで確認しました。 したがってShiroHttpServletResponseクラス継承、次いでShiroFilterFactoryBeanを書き換えることができ、対応する方法がJSESSIONID部分が除去添加覆います。 ShiroHttpServletResponse書き換え Javaコードがある ShiroHttpServletResponse {延びパブリッククラスMyShiroHttpServletResponse パブリックMyShiroHttpServletResponse(HttpServletResponseのラップされた、のServletContextコンテキスト、ShiroHttpServletRequest要求){ スーパー(ラップされた、コンテキスト、要求); } @Overrideは、 文字列toEncoded(URL文字列、文字列セッションID){保護された IFは、(( == URL ヌル)||(セッションID == NULL )) リターン(URL)、 文字列のパス =URL; 文字列のクエリ =「」; 文字列のアンカー =「」; int型質問= url.indexOf( '?' ); もし(質問> = 0 ){ パス = url.substring(0 、質問)。 クエリ = url.substring(質問); } int型ポンド= path.indexOf( '#' )。 もし(ポンド> = 0 ){ アンカー = path.substring(ポンド)。 パス = path.substring(0 、ポンド)。 } のStringBuilder SB= 新規新規のStringBuilder(パス); // オーバーライドtoEncoded方法、コードのコメント行はJESSIONIDを生成しません。 // 。IF(sb.length()> 0){//セッションID paramは初めてではないことができます // ( ";"); sb.append // sb.append(DEFAULT_SESSION_ID_PARAMETER_NAME); // sb.append( "="); // sb.append(セッションID); // } sb.append(アンカー); sb.append(クエリ); リターン(sb.toString()); } } 2 。拡張ShiroFilterFactoryBean、新規の使用MyShiroHttpServletResponse。 Javaコード パブリッククラスMyShiroFilterFactoryBeanはShiroFilterFactoryBean {延び @Override publicクラスgetObjectType(){ 戻りMySpringShiroFilter.classと、 } @Overrideは AbstractShiroFilterしたcreateInstance()は例外をスロー{保護 セキュリティマネージャセキュリティマネージャ = getSecurityManager()。 もし(セキュリティマネージャ== NULL ){ 文字列MSGは =「セキュリティマネージャのプロパティを設定する必要があります。」; スロー 新しいBeanInitializationException(MSG)を、 } もし(!(SecurityManagerのinstanceofはWebSecurityManager)){ 文字列MSG =「セキュリティマネージャはWebSecurityManagerインタフェースを実装していません。」; スロー 新しいBeanInitializationException(MSG)を、 } FilterChainManagerマネージャ = createFilterChainManager()。 PathMatchingFilterChainResolver chainResolver = 新しいPathMatchingFilterChainResolver(); chainResolver.setFilterChainManager(マネージャ)。 返す 新しいMySpringShiroFilter((WebSecurityManager)のSecurityManager、chainResolverを)。 } プライベート静的最終的なクラスMySpringShiroFilterは{AbstractShiroFilterを拡張します 保護MySpringShiroFilter(WebSecurityManager webSecurityManager、FilterChainResolverレゾルバ){ スーパー()。 場合(webSecurityManager == nullの){ スロー 新しい、IllegalArgumentExceptionを( "WebSecurityManagerプロパティがnullにすることはできません。" ); } setSecurityManager(webSecurityManager)。 もし(!レゾルバ= NULL ){ setFilterChainResolver(レゾルバ)。 } } @Overrideは ServletResponseをwrapServletResponse保護(HttpServletResponseのORIG、ShiroHttpServletRequestリクエスト){ リターン 新しい新しいMyShiroHttpServletResponse(ORIG、のgetServletContext()、要求); } } } 3。士郎は自分MyShiroFilterFactoryBean(ああ、私は春と史郎の組み合わせを使用)に設定して置き換える。 < - Webフィルタの史郎- ! > <ビーンID = "shiroFilter"クラス= "com.jsnr.aws.web.shiro.spring.MyShiroFilterFactoryBean"> <プロパティ名= "セキュリティマネージャ" REF = "セキュリティマネージャ" /> <プロパティ名= "loginUrl"値= " /login.jsp "/> <プロパティ名=" unauthorizedUrl "値=" / unauthorized.jsp「/> ..... </豆>