web.xmlのfilterでwelcome-pageをブロックします.

1606 ワード

spring securityを権限制御に使う過程で、以下の要求に遭遇しました.
ユーザーがログインしたら、ホームページurlを入力するときはログインページではなく、ログインしたホームページに直接ジャンプします.
「/」と「index.html」にはもともと権限が必要ではないので、appication Contact-security.xmlには以下のように配置されています.
 
<s:intercept-url pattern="/" filters="none" />
<s:intercept-url pattern="/index.html" filters="none" />
 
 この2行を除いて、ユーザー定義のProcessigFilterで登録すれば直接chain.filterと判断しましたが、できないことが分かりました.filters=「none」を使わないと、スプラインsecurityはデフォルトで/**にマッチングします.
 
仕方なく、自分でFilterを書いてweb.xmlにセットしてこの機能を実現します.もちろん、このように見えますが、もっといい解決方法はありません.ここで注意したいのですが、servlet 2.4 specという言い方で、mappingのurlに対しては
 
 書き記す
•A string containing only the'/'character indicates the"default"servlet of
the appection.In this case the servlet path is the request URI minus the context
path and the path info is null.
 
 でも実際に自分で書いたそのFilterがmappingにセットされていたら 
   
		<filter-name>directlyNavigateToMainPageWhenAuthenticationSuccessFilter</filter-name>
		<url-pattern>/</url-pattern>
	</filter-mapping>
 
どうしても「/」と「index」は捉えられません.解決方法はここに直接welcome-pageのアドレスを作ります.
	<filter-mapping>
		<filter-name>directlyNavigateToMainPageWhenAuthenticationSuccessFilter</filter-name>
		<url-pattern>/index.html</url-pattern>
	</filter-mapping>
 
これで捕獲できます.
 
specに対する理解が間違っているのか分かりませんか?なんだか「/」はデフォルトページを捕獲できると思います.