English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
التحقق بناءً على النموذج هو طريقة لتحقق هوية المستخدم من خلال نموذج الدخول. النموذج مدمج، وتقدمه إطار Spring security.
يقدم类 HttpSecurity طريقة formLogin()، التي تتحمل عرض نموذج الدخول وتحقق من معرفات المستخدم.
في هذا الدليل، سنقوم بإنشاء مثال يحقق التحقق بناءً على النموذج. لنبدأ بالمثال.
أولاً، قم بإنشاء مشروع Maven عن طريق تقديم تفاصيل المشروع.
يبدو المشروع الأصلي هكذا:
باستخدام ملفات Java التالية لإعداد الأمان في التطبيق. أنشئ مكتبة com.w3codebox 并将所有文件放入其中。
//AppConfig.java
باقة 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.w3codebox.controller.*"}) 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
باقة com.w3codebox; import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; public class MvcWebApplicationInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {}} @Override protected Class<?>[] getRootConfigClasses() { العودة new Class[] { WebSecurityConfig.class }; } @Override protected Class<?>[] getServletConfigClasses() { // TOdo Auto-generated method stub العودة null; } @Override protected String[] getServletMappings() { العودة new String[] { "/" }; } }
//SecurityWebApplicationInitializer.java
باقة com.w3codebox; استيراد org.springframework.security.web.context.*; العمومية class SecurityWebApplicationInitializer extends AbstractSecurityWebApplicationInitializer { }
//WebSecuiryConfig.java
باقة com.w3codebox; استيراد org.springframework.context.annotation.*; استيراد org.springframework.security.config.annotation.web.builders.HttpSecurity; استيراد org.springframework.security.config.annotation.web.configuration.*; استيراد org.springframework.security.core.userdetails.*; استيراد org.springframework.security.provisioning.InMemoryUserDetailsManager; استيراد 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() // It renders a login form .and() .logout() .logoutRequestMatcher(new AntPathRequestMatcher("/logout")); } }
أنشئ محكمًا Controller HomeController وأضعه في com.w3codebox.controller تتضمن الباقة التالية كودًا.
//HomeController.java
الباقة com.w3codebox.controller; استيراد org.springframework.stereotype.Controller; استيراد 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 "index"; } @RequestMapping(value="/admin", method=RequestMethod.GET) public String admin() { return "admin"; } }
يحتوي هذا المشروع على الوجهات التالية (صفحات JSP) إثنين. ضعهم في WEB-INF/views في المجلد.
//index.jsp
<html> <head> <title>صفحة المبدأ</title> </head> <body> مرحبًا بك في w3codebox! <br> <br> <a href="admin">تسجيل الدخول إدارة</a> </body> </html>
//admin.jsp
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>صفحة البداية</title> </head> <body> <span style="color: green;">نجاح تسجيل الدخول!</span> <a href="logout">خروج</a> <hr> <h3>مرحبًا إدارة</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> </configuration> </plugin> </plugins> </build> </project>
بعد إضافة جميع هذه الملفات، بنية المشروع ستكون كما يلي:
عند تشغيل التطبيق على الخادم، يمكنك رؤية النتيجة التالية التي ينتجها من خلال المتصفح.
الخروج:
انقر على الرابط، سيتم عرض نموذج تسجيل الدخول، والذي سيتم استخدامه للتحقق من هوية المستخدم بناءً على النموذج.
بعد التحقق من المعرفات، سيتم التحقق من هوية المستخدم وعرضها على صفحة الإدارة.