English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
基于表单的身份验证是一种通过登录表单完成用户身份验证的方式。该表单是内置的,由Spring security框架提供。
HttpSecurity类提供了formLogin()方法,该方法负责呈现登录表单并验证用户凭据。
在本教程中,我们将创建一个实现基于表单的身份验证的示例。让我们开始示例。
首先通过提供项目详细信息来创建Maven项目。
该项目最初看起来像这样:
通过使用以下Java文件在应用程序中配置spring安全性。创建一个包 com.w3codebox 并将所有文件放入其中。
//AppConfig.java
package com.w3codebox; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.view.InternalResourceViewResolver; import org.springframework.web.servlet.view.JstlView; @EnableWebMvc @Configuration @ComponentScan({ "com.w"3*" }) public class AppConfig { @Bean public InternalResourceViewResolver viewResolver() { InternalResourceViewResolver viewResolver = new InternalResourceViewResolver(); //viewResolver.setViewClass(JstlView.class); viewResolver.setPrefix("/WEB-INF/views/"); viewResolver.setSuffix(".jsp"); return viewResolver; } }
//MvcWebApplicationInitializer.java
package com.w3codebox; import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; public class MvcWebApplicationInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { @Override protected Class<?>[] getRootConfigClasses() { return new Class[] { WebSecurityConfig.class }; } @Override protected Class<?>[] getServletConfigClasses() { // TOdo Auto-generated method stub return null; } @Override protected String[] getServletMappings() { return new String[] { "/" }; } }
//SecurityWebApplicationInitializer.java
package com.w3codebox; import org.springframework.security.web.context.*; public class SecurityWebApplicationInitializer extends AbstractSecurityWebApplicationInitializer { }
//WebSecuiryConfig.java
package com.w3codebox; import org.springframework.context.annotation.*; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.*; import org.springframework.security.core.userdetails.*; import org.springframework.security.provisioning.InMemoryUserDetailsManager; import org.springframework.security.web.util.matcher.AntPathRequestMatcher; @EnableWebSecurity @ComponentScan("com.w3codebox) public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Bean public UserDetailsService userDetailsService() { InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager(); manager.createUser(User.withDefaultPasswordEncoder() .username("admin").password("admin123).roles("ADMIN").build()); return manager; } @Override protected void configure(HttpSecurity http) throws Exception {}} http.authorizeRequests(). antMatchers("/index", "/user","/").permitAll() .antMatchers(")/admin").authenticated() .and() .formLogin() // Il rend un formulaire de connexion .and() .logout() .logoutRequestMatcher(new AntPathRequestMatcher(")/logout"); } }
Créez un contrôleur HomeController et mettez-le dans com.w3codebox.controller dans le paquet. Il contient le code suivant.
//HomeController.java
package com.w3codebox.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @Controller public class HomeController { @RequestMapping(value=")/", method=RequestMethod.GET) public String index() { return \ } @RequestMapping(value=")/admin", method=RequestMethod.GET) public String admin() { return \ } }
Ce projet contient les deux vues suivantes (pages JSP). Mettez-les dans WEB-INF/views dans le dossier.
//index.jsp
<html> <head> <title>Page d'accueil</title> </head> <body> Bienvenue dans w3codebox! <a href="admin">Admin login</a> </body> </html>
//admin.jsp
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Page d'accueil</title> </head> <body> <span style="color: green;">connexion réussie!</span> <a href="logout">Déconnexion</a> <hr> <h3>Bienvenue Admin</h3> </body> </html>
//pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.w3codebox</groupId> <artifactId>springsecurity</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <properties> <maven.compiler.target>1.8</maven.compiler.target> <maven.compiler.source>1.8</maven.compiler.source> </properties> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.0.2.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-web</artifactId> <version>5.0.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-core</artifactId> <version>5.0.4.RELEASE</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework.security/spring-security-config --> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-config</artifactId> <version>5.0.4.RELEASE</version> </dependency> <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api --> <dependency> <groupId>javax.servlet/groupId> <artifactId>javax.servlet-api/artifactId> <version>3.1.0/version> <scope>provided/scope> </dependency> <dependency> <groupId>javax.servlet/groupId> <artifactId>jstl/artifactId> <version>1.2</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins/groupId> <artifactId>maven-war-plugin/artifactId> <version>2.6</version> <configuration> <failOnMissingWebXml>false</failOnMissingWebXml>/failOnMissingWebXml> </configuration> </plugin> </plugins> </build> </project>
Après avoir ajouté tous ces fichiers, la structure du projet sera comme suit:
Exécutez l'application sur le serveur et vous verrez qu'elle génère le suivant pour le navigateur.
Sortie:
Cliquez sur le lien, un formulaire de connexion s'affichera, qui sera utilisé pour l'authentification basée sur le formulaire.
Après vérification des credentials, l'identité de l'utilisateur sera vérifiée et affichée sur la page d'administration.