J'ai développé une application qui utilise la page de connexion par défaut de Spring Security. Cependant, je veux implémenter ma propre page de connexion. Je mettrai un login.html au lieu d'une page jsp. Je veux utiliser JQuery pour cela. J'ai examiné de nombreux exemples mais je n'ai pas réussi. Je suis nouveau dans Spring et Spring Security, j'utilise Spring Security 3. Avez-vous des idées sur les étapes à suivre?
Il existe quatre exigences pour une page de connexion personnalisée dans Spring Security:
j_username
qui contiendra le nom utilisé pour les informations d'authentification.j_password
qui contiendra le mot de passe utilisé pour les informations d'authentification.POST
ed correspond à l'URL définie dans le login-processing-url
attribut de form-login
élément dans votre configuration Spring Security.login-page
attribut de form-login
élément dans votre configuration Spring Security.Login.html
<body>
<form action="/j_spring_security_check" method="POST">
<label for="username">User Name:</label>
<input id="username" name="j_username" type="text"/>
<label for="password">Password:</label>
<input id="password" name="j_password" type="password"/>
<input type="submit" value="Log In"/>
</form>
</body>
fichier de configuration de sécurité Spring
<http use-expressions="true">
<intercept-url pattern="/login*" access="isAnonymous()"/>
<intercept-url pattern="/**" access="isFullyAuthenticated()"/>
<form-login
login-page="/login.html"
login-processing-url="/j_spring_security_check.action"
authentication-failure-url="/login_error.html"
default-target-url="/home.html"
always-use-default-target="true"/>
</http>
Je travaille depuis quelques jours sur l'implémentation de la sécurité du printemps dans mon projet et la configuration qui l'a finalement fait était la suivante:
spring-security.xml
<security:http auto-config="true" disable-url-rewriting="true" use-expressions="true">
<security:form-login
login-page="/login.html"
login-processing-url="/j_spring_security_check.action"
default-target-url="/index.html"
always-use-default-target="true"
authentication-failure-url="/login.html?error=true" />
<security:intercept-url pattern="/login*" access="isAnonymous()" />
<security:intercept-url pattern="/**" access="hasRole('ROLE_USER')" />
</security:http>
<security:authentication-manager>
<security:authentication-provider>
<security:jdbc-user-service
data-source-ref="dataSource"
users-by-username-query="select username, password, enabled from smartcaldb.users where username=?"
authorities-by-username-query="select u.username, r.authority from smartcaldb.users u, smartcaldb.roles r where u.userid = r.userid and u.username =?" />
</security:authentication-provider>
</security:authentication-manager>
spring-config.xml
<mvc:annotation-driven />
<context:component-scan base-package="com.smartcal.**" />
<!-- setup database connectivity bean -->
<bean id="dataSource" class="org.Apache.commons.dbcp2.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
<context:property-placeholder location="/WEB-INF/jdbc.properties" />
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<constructor-arg ref="dataSource"/>
</bean>
web.xml
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/spring-config.xml
/WEB-INF/spring-security.xml
</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/login</url-pattern>
<url-pattern>/</url-pattern>
</servlet-mapping>
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
<init-param>
<param-name>contextAttribute</param-name>
<param-value>org.springframework.web.context.WebApplicationContext.ROOT</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<error-page>
<error-code>403</error-code>
<location>/403</location>
</error-page>
login.html
<body>
<form action="/smartcal/j_spring_security_check.action" method="POST">
<label for="username">User Name:</label>
<input id="username" name="j_username" type="text" />
<label for="password">Password:</label>
<input id="password" name="j_password" type="password" />
<input type="submit" value="Log In" />
</form>
</body>
pour la déconnexion, utilisez l'URL - "/ {yourAppPathInTheContainer}/j_spring_security_logout"