首页 > 其他分享 >Spring Security XML示例

Spring Security XML示例

时间:2023-01-19 22:44:08浏览次数:39  
标签:XML 示例 Spring springframework spring org security Security

Spring Security XML示例

在本教程中,我们将使用Spring MVC 框架实现 Spring Security。所有示例都是Spring MVC,并且是使用Maven项目创建的。

我们使用的是 Spring Security 5.0.0.RELEASE 版本,以下是maven依赖项,我们在所有示例中都使用了。(web core config)

<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应用程序中实现Spring Security,我们可以使用XML或基于Java的配置对其进行配置。

我们来看一个示例,其中将使用XML来配置Spring Security。

 

最初,它是空的。因此,让我们创建一个Spring MVC应用程序并与Spring Security集成。

这是我们的项目布局。它包含一个控制器,三个XML文件和两个JSP文件。

 

Spring Security Project源代码

我们的项目名称为 springsecurity ,其中包含以下源文件。

控制器

HomeController。 Java

package com.nhooo.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 "home";
    }
    
    @RequestMapping(value="/admin", method=RequestMethod.GET)
    public String privateHome() {
        return "privatePage";
    }
}

Spring security配置

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>

Servlet调度程序

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.nhooo.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描述符

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.nhooo</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 Nhooo spring tutorial!</h2>
</body>
</html>

privatePage.jsp

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的登录模块,并且它如何验证与所提供的用户名和密码相对应。

接下来,我们将实现主题进一步的逻辑,例如: 成功登录后呈现用户。

 

 

 

 

 

标签:XML,示例,Spring,springframework,spring,org,security,Security
From: https://www.cnblogs.com/cnetsa/p/17062242.html

相关文章

  • SpringCloud Stream消息驱动
    简单搭建,没有技术含量,Demo可用1、介绍①产生原因RabbitMQ、RocketMQ、Kafka、ActiveMQ在一个项目中,可能存在多种不同的MQ,在不同的MQ中,切换维护开发都很麻烦。如果你......
  • Spring security模块
    在SpringSecurity3.0中,"安全性"模块分为单独的jar文件。目的是根据jar文件的功能进行划分,以便开发人员可以根据其要求进行集成。这还有助于将所需的依赖项设置为maven项......
  • 基于springboot的景区旅游信息管理系统(源代码+数据库)
    基于springboot的景区旅游信息管理系统(源代码+数据库)一、系统介绍本项目分为管理员与普通用户两种角色用户登录前台功能:旅游路线、旅游景点、旅游酒店、旅游车票、......
  • springboot整合minio
    代码参考GitHub地址安装minio1、进入官网:https://min.io/我目前安装的是版本是:在cmd窗口中,命令行进行minio.exe所在的文件夹,输入如下命令server后面的地址是你......
  • Spring security 教程
    SpringSecurity教程提供了SpringSecurity的基本和高级概念。我们的SpringSecurity教程面向初学者和专业人士。我们的SpringSecurity教程涵盖了SpringSecurity的所有......
  • 41-Springboot整合HignLevelClient----给es中保存数据
    1、导入依赖 <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId> <version>7.4.2</v......
  • SpringBoot2(一)SpringBoot入门程序
    SpringBoot2(一)SpringBoot入门程序在整合SSM框架时,需要大量的配置文件,SpringBoot可以简化这些配置,提高开发效率。并且Spring内置了Tomcat、Jetty、Undertow容器。搭建Spri......
  • 61、全文检索--Springboot整合HignLevelClient
    注意:它默认帮我们导入的elasticsearch版本不是我们使用的7.4.2,因为我们的Springboot项目一致维护了elasticsearch的版本通过以下方式在我们的项目中自己指定版本......
  • 【Azure 存储服务】.NET7.0 示例代码之上传大文件到Azure Storage Blob
    问题描述在使用Azure的存储服务时候,如果上传的文件大于了100MB,1GB的情况下,如何上传呢?问题解答使用Azure存储服务时,如果要上传文件到AzureBlob,有很多种工具可以实现。如:Azu......
  • 230119_50_SpringBoot入门
    多环境配置文件指定方式一:properites文件文件名可以是application-{profile}.properties/yml,用来指定多个环境版本:server.port=8081//testserver.port=80......