如果您想保护您的 Spring Web 应用程序,您只需要配置一些文件以使用 Spring Security 实现它。我们将在 hello world 示例中应用登录安全性。因此,只有授权用户才能访问 hello world 消息。
以下是在 spring mvc hello world 示例上应用基本 Spring Security 的步骤。
第 1 步: 创建名为 SpringSecurityHelloWorldExample 的Spring mvc hello world 示例。它将创建基本的 spring mvc 应用程序。
步骤 2: 将 spring security 添加到 pom.xml。您需要将以下依赖项添加到 pom.xml 中。
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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.arpit.java2blog</groupId> <artifactId>SpringSecurityHelloWorlExample</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>SpringSecurityHelloWorldExample Maven Webapp</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <!-- Spring Security --> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-core</artifactId> <version>${security.version}</version> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-web</artifactId> <version>${security.version}</version> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-config</artifactId> <version>${security.version}</version> </dependency> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> <scope>provided</scope> </dependency> </dependencies> <build> <finalName>SpringSecurityHelloWorlExample</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <source>${jdk.version}</source> <target>${jdk.version}</target> </configuration> </plugin> </plugins> </build> <properties> <spring.version>4.2.1.RELEASE</spring.version> <security.version>4.0.3.RELEASE</security.version> <jdk.version>1.7</jdk.version> </properties> </project>
第三步: 修改 / WEB-INF/ 文件夹下的hello.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Hello</title> </head> <body> ${message} <c:url value="/j_spring_security_logout" var="logoutUrl" /> Log Out </body> </html>
第4步:
现在我们需要添加spring配置xml。创建一个名为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-4.0.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-4.0.xsd"> <http auto-config="true" use-expressions="true"> <intercept-url pattern="/resources/**" access="permitAll" /> <intercept-url pattern="/hello*" access="hasRole('ROLE_ADMIN')" /> <logout logout-success-url="/" logout-url="/j_spring_security_logout" /> <csrf disabled="true"/> </http> <authentication-manager> <authentication-provider> <user-service> <user name="java2blog" password="java123" authorities="ROLE_ADMIN" /> </user-service> </authentication-provider> </authentication-manager> </beans:beans>
intercept-url 配置为哪种模式配置哪种安全性。例如:如果 http 请求的 url 有模式/hello* (hello.jsp,helloworld.html),它只会被ROLE_ADMIN访问。
我们在身份验证管理器中硬编码了用户名(java2blog)和密码(java123),所以如果用户为管理员提供正确的凭据,那么只有他能够访问 helloworld.htm/。
我们这里没有配置任何登录页面,所以spring security会为我们生成一个。
第五步:我们需要修改web.xml来配置spring security。
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <display-name>Archetype Created Web Application</display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>springmvc-dispatcher</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springmvc-dispatcher</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <context-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/springmvc-dispatcher-servlet.xml, /WEB-INF/spring-security.xml </param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- Spring Security --> <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> </web-app>
在这里,我们使用了 DelegatingFilterProxy 来拦截 http 请求并将其传递给 springSecurityFilterChain。springSecurityFilterChain是由 spring 创建的一个 bean,在spring-security.xml中使用了**http**元素。它维护所有过滤器的列表并负责过滤器链。
我们完成了 Spring Security 所需的更改。
第6步: 是时候构建maven了。
提供干净安装的目标(如下所示)并单击运行
第7步: 右键单击项目->运行方式->在服务器上运行
选择apache tomcat并点击finish
您将看到以下屏幕:
当您点击上面的链接时,您将获得以下登录页面。
如果您输入错误的密码并尝试登录,您将看到以下屏幕
如果您输入正确的用户名和密码
答对了 !!您已成功登录。
当您单击注销时,您将返回到第一个屏幕。
下载
点击开始
20KB .zip
原文链接:https://codingdict.com/