This repository was archived by the owner on Nov 20, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2
Spring Security Login
PINGUET Julien edited this page Feb 5, 2015
·
2 revisions
<http auto-config="true" use-expressions="true">
<form-login login-page="/login.xhtml"
authentication-failure-url="/login.xhtml?error" />
</http>Options du tag <form-login> :
-
login-page : page d'authentification (défaut :
/spring_security_logingénérée par Spring) -
login-processing-url : URL effectuant le processus d'authentification (défaut :
/j_spring_security_check) - default-target-url : URL après succès de l'authentification (défaut : racine)
-
authentication-failure-url : URL après échec de l'authentification (défaut :
/spring_security_login?login_error) -
username-parameter : ID du champ username (défaut :
j_username) -
password-parameter : ID du champ password (défaut :
j_password)
<authentication-manager>
<authentication-provider>
<jdbc-user-service data-source-ref="dataSource"
users-by-username-query="
select login, password, 'true'
from user
where login = ?"
authorities-by-username-query="
select login, profiles_rights.right
from user
inner join users_profiles on user.login = users_profiles.user
inner join profile on users_profiles.profile = profile.id
inner join profiles_rights on profile.id = profiles_rights.profile
where login = ?" />
</authentication-provider>
</authentication-manager>Options du tag jdbc-user-service :
- data-source-ref : Bean vers la source de données
- users-by-username-query : Requète SQL qui répètre les 3 informations d'un utilisateur (username, password et enabled), en prennant en paramètre le username
- authorities-by-username-query : Requète SQL qui répète les rôles d'un utilisateur (username, authority), en prennant en paramètre le username
<form action="j_spring_security_check" method="post">
<input id="j_username" />
<input id="j_password" />
<input value="Login" type="submit" />
</form>où
-
j_spring_security_check: valeur du paramètre login-processing-url -
j_username: valeur du paramètre username-parameter -
j_password: valeur du paramètre password-parameter
On ne peut pas définir l'URL cible (tag form ou button).
xHTML :
<h:form prependId="false">
<p:inputText id="j_username" value="#{loginManagedBean.username}" />
<p:inputText id="j_password" value="#{loginManagedBean.password}" />
<p:commandButton ajax="false" action="#{loginManagedBean.login}" type="submit" value="Sumbit" />
</h:form>Managed Bean :
@ManagedBean
@ViewScoped
public final class LoginManagedBean {
// ...
public void login() throws ServletException, IOException {
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();
}
}Pour autoriser la redirection, ajouter <dispatcher>FORWARD</dispatcher> au filtre springSecurityFilterChain dans le fichier web.xml :
<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>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>