English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
이 튜토리얼에서 우리는Spring MVC 프레임워크 구현 Spring Security모든 예제는 Spring MVC이며 Maven 프로젝트를 통해 생성되었습니다.
우리가 사용하는 것은 Spring Security 5.0.0.RELEASE 버전, 다음은 maven 의존성입니다. 모든 예제에서 사용했습니다.
<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.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-config</artifactId> <version>5.0.0.RELEASE</version> </dependency>
Spring Security를 Spring 애플리케이션에서 구현하려면 XML 또는 Java 기반 설정을 사용할 수 있습니다.
Spring Security를 설정하는 데 사용할 예제를 보겠습니다.
우리와 같이 클릭하십시오 File 메뉴에서 찾을 수 있습니다 New→Maven Project 다음 스크린 캡처에서.
프로젝트 이름을 제공하고 다음 단계에 따라 패키지 유형을 war(네트워크 아카이브)。
완료이 프로젝트는 프로젝트를 위한 비어 있는 디렉토리 구조를 생성합니다. 다음과 같습니다.
처음에는 비어 있었습니다. 따라서让我们创建一个Spring MVC应用程序并与Spring Security集成。
이것은 우리의 프로젝트 레이아웃입니다. 그것은 하나의 컨트롤러, 세 개의 XML 파일, 두 개의 JSP 파일을 포함하고 있습니다.
우리의 프로젝트 이름은 springsecurity ، 다음 소스 파일이 포함되어 있습니다.
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 home() { return \ } @RequestMapping(value="/admin", method=RequestMethod.GET) public String privateHome() { return "privatePage"; } }
spring-security.xml
<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.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security.xsd"> <http auto-config="true"> <intercept-url pattern="/admin" access="hasRole('ROLE_ADMIN')" /> </http <authentication-manager> <authentication-provider> <user-service> <user name="admin" password="1234" authorities="hasRole(ROLE_ADMIN)" /> </user-service> </authentication-provider> </authentication-manager> </beans:beans>
spring-servlet.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <mvc:annotation-driven /> <context:component-scan base-package="com.w3codebox.controller"> </context:component-scan> <context:annotation-config></context:annotation-config> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/></property> <property name="suffix" value=".jsp"></property> </bean> </beans>
web.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE xml> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> <!-- Spring Configuration --> <servlet> <servlet-name>spring</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spring</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <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> </filter-mapping> <context-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/spring-servlet.xml /WEB-INF/spring-security.xml </param-value> </context-param> </web-app>
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.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-config</artifactId> <version>5.0.0.RELEASE</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </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>
home.jsp
<html> <head> <meta content="text/html; charset=UTF-8"> <title>Home</title> </head> <body> <h2>Welcome to w3codebox spring tutorial!/h2> </body> </html>
home.jsp
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Admin</title> </head> <body> Hello Admin </body> </html>
출력
이 예제는 Apache Tomcat v9.0 실행. 실행 후, 브라우저에 다음과 같은 출력이 생성됩니다.
처음에는 다음과 같이 표시됩니다. home.jsp 페이지에서 다음과 같은 출력이 표시됩니다.
관리 페이지에 입력하면 다음과 같은 출력이 표시됩니다./ admin 그렇다면 관리 페이지에 Spring Security가 추가됩니다. 브라우저에서, 애플리케이션은 다음과 같은 출력을 생성합니다.
요청 URL: http: //localhost: 8080/springsecurity/admin
이제, 이는 Spring Security가 제공하는 자원을 보호하는 진정한魔法입니다.
이는 Spring Security가 제공하는 모듈입니다. 우리는 그것을 생성하지 않았습니다. 사용자 입력을 검증합니다.
잘못된 자격 증명 제공
잘못된 로그인 자격 증명을 제공하면 우리가 다음과 같이 사용합니다. spring-security.xml 문서에서 언급된 사용자 이름과 비밀번호를 검증합니다.
검증 후, 로그인 자격 증명이 정확하지 않으면 오류 메시지가 발생합니다.
이 예제에서는 Spring Security의 로그인 모듈을 본ed 및 이가 제공된 사용자 이름과 비밀번호와 어떻게 일치하는지 확인하는 방법을 본ed.
다음은 주제의 추가 논리를 구현할 예정입니다. 예를 들어, 성공적으로 로그인한 후 사용자를 표시합니다.