本篇内容介绍了“SpringSecurity原理有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
Spring Security主要是服务于Web应用,Spring Security也主要是通过Java的Filter来实现。
Java的Web应用两大核心就是:
Servlet
Filter
很多朋友可能已经忘了在没有SpringMVC之前被java的web.xml配置支配的恐惧。
如果对此没有印象的朋友,或者完全没有使用过的朋友,可以看下面的web.xml配置回忆一下,看还能不能记得每个配置的含义。
<?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>terrible</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<filter>
<display-name>EcodingFilter</display-name>
<filter-name>EcodingFilter</filter-name>
<filter-class>vip.mycollege.filter.EnCodeFilter</filter-class>
<init-param>
<param-name>EncodeCoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>EcodingFilter</filter-name>
<servlet-name>hello</servlet-name>
<url-pattern>*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class></servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
上面的配置还是只是一个简单的Servet和一个Filter。
Java Web的整个流程还简单,就是Servelt容器,也就是Java Web服务器,如,Tomcat、Jetty等启动的时候回去加载web.xml文件,解析里面的配置,主要是Servlet和Filter,把url和Servlet、Filter对应上,这样当接收都一个url请求的时候,就交个对应的Filter和Servlet去处理。
先Filter后Servlet的,Filter可以有多个,是链式结构,有优先级。
web.xml配置方式的最大的问题就是,url映射配置复杂,稍不小心就404。
后来有了SpringMVC就好了一些,只需要配置一个Servlet,都交给org.springframework.web.servlet.DispatcherServlet这个Servlet统一处理url的映射分发,Spring自己去解析Controller注解,把url和对应的方法对应,不用自己去配置url映射了。
再后来有了SpringBoot,简直就起飞了,DispatcherServlet都不需要配置了,开箱即用。
虽然,不需要手动配置了,原理还是要了解一点,这里我们只需要记住,Java的Web请求都是要先过Filter的,而这是Spring Security施展身手的地方。
如果一上来就直接说一下抽象概念,很多朋友可能就放弃治疗了。所以,我们先来一个简单的入门级示例,在门口看一下Spring Security是个啥东西。
首先,要引入Spring Security依赖,如果使用SpringBoot,引入非常简单
<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.5</version>
<relativePath/>
</parent>
<groupId>vip.oschool</groupId>
<artifactId>spsecurity</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>spsecurity</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>
server:
port: 8081
spring:
security:
user:
name: tim
password: 111111
上面配置了一个用户tim,密码是111111,如果不配置,Spring Security会使用默认用户,每次会生成随机密码。
添加一个简单的控制器
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/index")
public class IndexController {
@RequestMapping("/hello")
public String hello(){
return "Hello World";
}
}
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class StartApplication {
public static void main(String[] args) {
SpringApplication.run(StartApplication.class, args);
}
}
启动之后,直接访问:http://localhost:8081/index/hello
然后,就会被重定向到:http://localhost:8081/login
需要输入用户名和密码,这个过程有一个专有名词叫:认证,Authentication
“SpringSecurity原理有哪些”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://my.oschina.net/u/2474629/blog/5041891