ログイン成功後、「index.php」にリダイレクトされません。それは "login.php"と同じページをリダイレクトします。私のspring-security.xmlページに何か問題がありますか?ログイン後の春のセキュリティリダイレクト
ところで、私がアプリケーションを実行すると、それは良い "login.php"にリダイレクトされます。しかし、primefacesコンポーネントではなく、htmlコンポーネントを表示します。私はうまくログインした後、同じページをリダイレクトしますが、今回はhtmlコンポーネントの代わりにPrimefacesコンポーネントを表示します。
<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.1.xsd">
<http auto-config="true" use-expressions="true">
<intercept-url pattern="/pages/login.xhtml*" access="permitAll"/>
<intercept-url pattern="/**" access="hasRole('admin')" />
<form-login login-page='/pages/login.xhtml' default-target-url="/pages/index.xhtml"
authentication-failure-url="/pages/login.xhtml"/>
<logout logout-success-url="/pages/logout.xhtml" />
</http>
<!--Authentication Manager Details -->
<authentication-manager alias="authenticationManager">
<authentication-provider user-service-ref="customUserDetailsService">
<!-- <password-encoder hash="md5"/>-->
</authentication-provider>
</authentication-manager>
私のweb.xml
<welcome-file-list>
<welcome-file>pages/index.xhtml</welcome-file>
</welcome-file-list>
私のログインページ
<p:outputPanel id="loginOutputPanelId" style="border: navy">
<p:panelGrid id="loginInformationPanel" columns="2">
<h:outputText value="Username: "/>
<p:inputText value="#{loginController.userName}"/>
<h:outputText value="Password: "/>
<p:inputText value="#{loginController.password}"/>
</p:panelGrid>
<p:commandButton value="Login" actionListener="#{loginController.login()}"/>
</p:outputPanel>
私loginController.login()メソッドが返す "インデックス" の文字列と私のfaces.config。
<navigation-rule>
<from-view-id>/pages/login.xhtml</from-view-id>
<navigation-case>
<from-outcome>index</from-outcome>
<to-view-id>/pages/index.xhtml</to-view-id>
<redirect />
</navigation-case>
</navigation-rule>
EDIT: 成分を含まない、それは問題なく動作します。私がフォームログインを追加すると、「http://localhost:8080/myApplication/pages/login.xhtml
のWebページではリダイレクトが多すぎます」と表示されます。
<http auto-config='true' use-expressions="true">
<intercept-url pattern="/**" access="hasRole('admin')" />
<logout logout-success-url="/pages/logout.xhtml" />
<form-login login-page="/pages/login.xhtml"
login-processing-url="/j_spring_security_check"
default-target-url="/pages/index.xhtml"
authentication-failure-url="/pages/login.xhtml"/>
</http>
マイログインページ
<p:outputPanel id="loginOutputPanelId" style="border: navy">
<p:panelGrid id="loginInformationPanel" columns="2">
<h:outputText value="Kullanıcı Adı: "/>
<p:inputText id="j_username" required="true" value="#{loginController.userName}"/>
<h:outputText value="Şifre: "/>
<p:inputText id="j_password" required="true" value="#{loginController.password}"/>
</p:panelGrid>
<p:commandButton id="login" type="submit" ajax="false" value="Login" actionListener="#{loginController.login()}"/>
</p:outputPanel>
私の新しいloginController.login()メソッド。
ExternalContext context = FacesContext.getCurrentInstance().getExternalContext();
RequestDispatcher dispatcher = ((ServletRequest) context.getRequest())
.getRequestDispatcher("/j_spring_security_check");
dispatcher.forward((ServletRequest) context.getRequest(),
(ServletResponse) context.getResponse());
FacesContext.getCurrentInstance().responseComplete();
:
を、あなたは次のように春-のsecurity.xmlでコードを更新する必要があります。それは何も変わらない。 –
あなたが最初に呼ぶURLは何ですか?あなたは直接ログインページに電話をするか、別の保護されたURLを呼び出しますか? – baraber
index.xhtmlは "web.xml"で定義された私の歓迎のファイルです。私はあなたが意味することを理解していません。 spring-security.xmlにはlogin-page = '/ pages/login.xhtml'、login.xhtmlには春セキュリティが最初に呼び出されます。 always-use-default-target = "true"行を追加した後は、どのページもリダイレクトしません。それはlogin.xhtmlページにとどまります。次に、ブラウザのアドレスバーにインデックスアドレスを手動で書きます。 –