2011-02-07 7 views
2

を動作していないし、パスワードはbean設定ファイルに指定されています url "login?error = true"のログインページにリダイレクトされました。つまり、 "authentication-failure-url ="/login? true ""春のセキュリティは私がURLに行くとき/ Iが正しくログインページ、 ではなく、ユーザー名でログインするにリダイレクトされています登録Struts2の+春+タイル+ +春のセキュリティアプリケーションを休止</p> <p>を開発しています

次の設定でフォームベースのログインを設定しました

//web.xml

<listener> 
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 
<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value> 
    /WEB-INF/applicationContext.xml 
    /WEB-INF/medic-security.xml 
    </param-value> 
</context-param> 

<filter> 
    <filter-name>springSecurityFilterChain</filter-name> 
    <filter-class> 
     org.springframework.web.filter.DelegatingFilterProxy 
    </filter-class> 
</filter> 

<filter-mapping> 
    <filter-name>springSecurityFilterChain</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

<filter> 
<filter-name>struts2</filter-name> 
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> 
</filter> 

<filter-mapping> 
<filter-name>struts2</filter-name> 
<url-pattern>/*</url-pattern> 
</filter-mapping> 

//medics-security.xml

<http auto-config="true" access-denied-page="/error"> 
<intercept-url pattern="/" access="IS_AUTHENTICATED_ANONYMOUSLY"/> 
<intercept-url pattern="/register*" access="ROLE_USER" /> 
<intercept-url pattern="/messagePost*" access="ROLE_USER" /> 
<intercept-url pattern="/messageDelete*" access="ROLE_ADMIN" /> 
<form-login login-page="/login" authentication-failure-url="/login?error=true"/> 
<remember-me/> 
<logout/> 

</http> 

<authentication-manager> 
    <authentication-provider> 
     <user-service> 
     <user name="admin" password="secret" authorities="ROLE_USER"/> 
     </user-service> 
    </authentication-provider> 
</authentication-manager> 

//login.jsp

<form action="j_spring_security_check"> 
    <label for="j_username">Username</label> 
<input type="text" name="j_username" id="j_username"/><br/> 
    <label for="j_password">Password</label> 
<input type="password" name="j_password" id="j_password"/><br/> 
    <input type='checkbox' name='_spring_security_remember_me'/> Remember me<br/> 
    <input type="submit" value="Login"/> 
<input type="reset" value="Reset"/> 
</form> 

//struts.xml

<package name="default" namespace="/" extends="struts-default"> 
    <action name="login" class="com.medics.action.LoginAction"> 
    <result name="SUCCESS" type="tiles">login</result> 
    </action> 

    <action name="register" class="com.medics.action.RegisterAction"> 
    <result name="SUCCESS">/Register.jsp</result> 
    </action> 
</package> 

アクションクラスは「S UCCESS "

答えて

3

<form>methodを指定していないため、GETdefault)が使用されています。 spring-security 3.xは、デフォルトでGETを使用した認証を許可しません。

method="post"を追加して、それが役立つかどうか確認できますか?

+0

ありがとうございました!あなたは –

+0

にありましたこれはまた、サーバーのログから明らかにする必要があります。 Spring Securityは、GETを使用しようとすると、AuthenticationServiceExceptionを "Authentication method not supported:GET"というメッセージとともに送出します。ブラウザの最後から観察するのではなく、質問をするときにサーバ上で何が起こるかを常に説明してください。 –

+0

私の食のコンソールには何もなかった。また、私はそうする方法を知らないので、デバッグログを有効にできませんでした –

関連する問題