Spring Security hello world 示例


如果您想保护您的 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了。 img

提供干净安装的目标(如下所示)并单击运行

img

运行应用程序

第7步: 右键单击项目->运行方式->在服务器上运行

选择apache tomcat并点击finish

img

您将看到以下屏幕:

img

当您点击上面的链接时,您将获得以下登录页面。

img

如果您输入错误的密码并尝试登录,您将看到以下屏幕

img

如果您输入正确的用户名和密码

img

答对了 !!您已成功登录。

img

当您单击注销时,您将返回到第一个屏幕。

下载源代码:

下载

点击开始

20KB .zip


原文链接:https://codingdict.com/