Po pomyślnym zalogowaniu, nie przekierowuje do "index.php". Przekierowuje tę samą stronę, która jest "login.php". Czy jest coś złego na mojej stronie spring-security.xml?Przekierowanie zabezpieczeń wiosennych po zalogowaniu
Nawiasem mówiąc, po uruchomieniu aplikacji przekierowuje mnie do "login.php", co jest dobre. Ale nie pokazuje składników primefaces, ale komponenty html. Po pomyślnym zalogowaniu się, przekierowuje tę samą stronę, ale tym razem pokazuje komponenty Primefaces zamiast komponentów HTML.
<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>
moim web.xml
<welcome-file-list>
<welcome-file>pages/index.xhtml</welcome-file>
</welcome-file-list>
moja strona logowania
<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>
mój loginController.login() zwraca metoda "Indeks" string i mój 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: bez komponentu przebiega bez problemu. Po dodaniu logowania do formularza jest napisane: "Strona internetowa o numerze http://localhost:8080/myApplication/pages/login.xhtml
spowodowała zbyt wiele przekierowań". Metoda
<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>
Moja strona logowania
<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>
Mój nowy 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();
nadal ten sam. Nic nie zmienia. –
jaki jest twój pierwszy URL? Czy dzwonisz bezpośrednio na stronę logowania, czy dzwonisz pod inny zabezpieczony URL? – baraber
index.xhtml to plik powitalny zdefiniowany w "web.xml". Nie rozumiem, co masz na myśli. Istnieje login-page = '/ pages/login.xhtml' na stronie spring-security.xml i spring security first calls login.xhtml. po dodaniu linii always-use-default-target = "true", teraz nie przekierowuje żadnej strony. Pozostaje na stronie login.xhtml. Następnie ręcznie wpisuję adres indeksu do paska adresu przeglądarki. –