Spring Security

Spring Security介绍 文章主要分三部分 1、Spring Security的架构及核心组件:(1)认证;(2)权限拦截;(3)数据库管理;(4)权限缓存;(5)自定义决策; 2、环境搭建与使用,使用当前热门的Spring Boot来搭建环境,结合项目中实际的例子来做几个Case; 3、Spring Security的优缺点总结,结合第二部分中几个Case的实现来总结Spring Security的优点和缺点。 1、Spring Security介绍 ​ 整体介绍,Spring Security为基于J2EE开发的企业应用软件 阅读详情

在认识Spring Security 之前,所有的权限验证逻辑都混杂在业务逻辑中,用户的每个操作以前可能都需要对用户是否有进行该项操作的权限进行判断,来达到认证授权的目的。类似这样的权限验证逻辑代码被分散在系统的许多地方,难以维护。AOP(Aspect Oriented Programming) 和Spring Security为我们的应用程序很好的解决了此类问题,正如系统日志,事务管理等这些系统级的服务一样,我们应该将它作为系统一个单独的”切面 ”进行管理,以达到业务逻辑与系统级的服务真正分离的目的,Spring Security将系统的安全逻辑从业务中分离出来。

本文代码运行环境:
 

JDK6.0

    spring-framework-2.5.4

    spring-security-2.0.0

    JavaEE5

 

Web 容器:

Apache Tomcat6.0

IDE 工具:

Eclipse3.3+MyEclipse6.5

操作系统:

Linux(Fedora 8)

    这只是我个人的学习总结而已,还请高手们指出本文的不足之处。

一  Spring Security 简介

这里提到的Spring Security也就是被大家广为熟悉的Acegi Security ,2007年底Acegi Security正式成为Spring Portfolio 项目,并更名为Spring Security。Spring Security 是一个能 够为 基于Spring的企业 应 用系 统 提供描述性安全访问控制解决方案的安全框架。它提供了一 组 可以在Spring 应 用上下文中配置的Bean,充分利用了Spring IoC(依 赖 注入,也称控制反转)和AOP(面向切面 编 程) 功能,为应用系统提供声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作。

通过在许多项目中实践应用以及社区的贡献,如今的 Spring Security 已经成为Spring Framework 下最成熟的安全系统,它为我们提供了强大而灵活的企业级安全服务,如:

Ø         认证授权机制

Ø         Web 资源访问控制

Ø         业务方法调用访问控制

Ø         领域对象访问控制 Access Control List (ACL )

Ø         单点登录( Central Authentication Service )

Ø         X509 认证

Ø         信道安全( Channel Security )管理等功能

当保护Web资源时,Spring Security 使用Servlet 过滤器 来拦截 Http 请求进行身份验证并强制安全性,以确保WEB资源被安全的访问。如下图是Spring Security的主要组件图(摘自《Spring in Action 》):



图 1 Spring Security的基本组件

无论是保护 WEB资源还是保护业务方法或者领域对象, Spring Security 都的通过上图中的组件来完成的。本文主要阐述如何使用Spring Security对WEB应用程序的资源进行安全访问控制,并通过一个简单的实例来对Spring Security提供的各种过滤器的功能和配置方法进行描述。

二  保护Web资源

Spring Security 提供了很多的过滤器,它们拦截Servlet请求,并将这些请求转交给认证处理过滤器和访问决策过滤器进行处理,并强制安全性,认证用户身份和用户权限以达到保护Web资源的目的。对于Web资源我们大约可以只用6个 过滤器来保护我们的应用系统,下表列出了这些安全过滤器的名称作用以及它们在系统中的执行顺序:

过   滤   器

作               用

通道处理过滤器

确保请求是在安全通道(HTTP和HTTPS)之上传输的

认证处理过滤器

接受认证请求,并将它们转交给认证管理器进行身份验证

CAS 处理过滤器

接受CAS服务票据,验证Yale CAS(单点登录)是否已经对用户进行了认证

HTTP 基本授权过滤器

处理使用HTTP基本认证的身份验证请求

集成过滤器

处理认证信息在请求间的存储(比如在HTTP会话中)

安全强制过滤器

确保用户己经认证,并且满足访问一个受保护Web资源的权限需求

接下来,通过一个实例来说明它们的具体使用方法和如何在Spring中进行配置。

1   建立Spring Security项目

首先在 MyEclipse中创建一个 Web Project,并使用 MyEclipse工具导入 Spring项目的依赖 JAR包,并生成默认的,这里暂时不会用到这个文件,本文只是通过一个简单的实例来说明如何配置使用 Spring Security,不会涉及到数据库,而是使用一个用户属性( users.properties)文件来保存用户信息(包括用户名,密码及相应的权限),但在实际的项目中,我们很少会这样做,而是应该把用户信息存在数据库中,下一篇文章中将会详细介绍并用到这个文件来配置 Hibernate,这里我们保留它。

现在还需要为项目导入 Spring Security的 JAR包,它没有包括在 Spring Framework 中,你可以从http://www.springframework.org/download/ 下载,并将spring-security-core-2.0.0.jar (这是核心代码库)和spring-security-core-tiger-2.0.0.jar (和annotation有关的,比如使用注解对方法进行安全访问控制,在下一篇中会用到)拷贝到项目的lib目录下,其中也包括两个实例(tutorial和contacts),并且两个实例中都包括了如何使用Spring 2.0的命名空间 来配置Spring Security,无论你对 Spring 2.0 命名空间的使用是否了解,它将使我们的配置文件大大缩短,简化开发,提高生产效率。 到此,我们的 Spring Security项目就建好了,项目目录结构如下图所示:


图 2 项目目录结构

2 配置 web.xml

Spring Security使用一组过滤器链来对用户进行身份验证和授权。首先,在 web.xml文件中添加 FilterToBeanProxy 过滤器配置:

 1   < filter >    
 2       < filter-name > springSecurityFilterChain </ filter-name >
 3      < filter-class >
 4         org.springframework.security.util.FilterToBeanProxy
 5      </ filter-class >
 6      < init-param >        
 7           <
param-name > targetClass </ param-name >
 8          < param-value >            
 9               org.springframework.security.util.FilterChainProxy
10          </ param-value >
11        </ init-param >
12 </ filter >
13

org.springframework.security.util. FilterToBeanProxy 实现了Filter接口,它通过调用 WebapplicationContextUtils 类的getWebApplicationnContext(servletContext) 方法来获取 Spring的应用上下文句柄,并通过 getBean(beanName)方法来获取 Spring受管 Bean的对象,即这里 targetClass 参数 配置的 Bean,并通过调用 FilterChain
Proxy
的 init() 方法来启动 Spring Security 过滤器链进行各种身份验证和授权服务( FilterChainProxy 类也是实现了 Filter 接口), 从而将过滤功能委托给Spring的 FilterChainProxy 受管Bean( 它维护着一个处理验证和授权的过滤器列表,列表中的过滤器按照一定的顺序执行并完成认证过程 ),这样即简化了web.xml文件的配置,又能充分利用 Spring的IoC功能来完成这些过滤器执行所需要的其它资源的注入。

当用户发出请求,过滤器需要根据 web.xml 配置的请求映射地址来拦截用户请求,这时 Spring Security开始工作,它会验证你的身份以及当前请求的资源是否与你拥有的权限相符,从而达到保护 Web资源的功能,下面是本例所要过滤的用户请求地址:

 1   < filter-mapping >
 2  
 3           < filter-name > springSecurityFilterChain </ filter-name >
 4  
 5           < url-pattern > /j_spring_security_check </ url-pattern >
 6  
 7        </ filter-mapping >
 8  
 9        < filter-mapping >
10  
11           < filter-name > springSecurityFilterChain </ filter-name >
12  
13           < url-pattern > /* </ url-pattern >
14  
15 </ filter-mapping >

 

提示:
/j_spring_security_check是Spring Security默认的进行表单验证的过滤地址,你也可以修改为别的名称,但是需要和
applicationContext-security.xml中相对应,当然还会涉及到其它一些默认值(可能是一个成员变量,也可能是别的请
求地址),在下文我们将看到,建议你在阅读此文的同时,应该参照Spring Security项目的源代码,便于你更好的理解。
 

 

3  配置applicationContext-security.xml

3.1  FilterChainProxy 过滤器链

FilterChainProxy 会按顺序来调用一组filter,使这些filter即能完成验证授权的本质工作,又能享用Spring Ioc的功能来方便的得到其它依赖的资源。FilterChainProxy配置如下:

 1   < bean  id ="filterChainProxy"    
        class
="org.springframework.security.util.FilterChainProxy" >
 2         < property  name ="filterInvocationDefinitionSource" >
 3            < value > <![CDATA[          
                CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON 
 4                PATTERN_TYPE_APACHE_ANT         
                /**=httpSessionContextIntegrationFilter,logoutFilter,
 5                authenticationProcessingFilter,securityContextHolderAwareRequestFilter,
 6                rememberMeProcessingFilter,anonymousProcessingFilter,exceptionTranslationFilter,
 7                filterSecurityInterceptor 
 8            ]]> </ value >
 9         </ property >
10   </ bean >

 

CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON 定义 URL在匹配之前必须先转为小写, PATTERN_TYPE_APACHE_ANT 定义了使用 Apache ant 的匹配模式,/** 定义的将等号后面的过滤器应用在那些 URL上,这里使用全部 URL过滤,每个过滤器之间都适用逗号分隔,它们按照一定的顺序排列。

提示:
特别需要注意的是,即使你配置了系统提供的所有过滤器,这个过滤器链会很长,但是千万不要使用换行,否则它们不会正常工作,
容器甚至不能正常启动。
 

 

下面根据 FilterChainProxy 的配置来介绍各个过滤器的配置,各个过滤器的执行顺序如以上配置。

首先是 通道处理过滤器 ,如果你需要使用HTTPS,这里我们就使用HTTP进行传输,所以不需要配置通道处理过滤器,然后是集成过滤器,配置如下:

1   < bean  id ="httpSessionContextIntegrationFilter"
2  
3   class ="org.springframework.security.context.HttpSessionContextIntegrationFilter" />

httpSessionContextIntegrationFilter 是 集成过滤器的一个实现,在用户的一个请求过程中,用户的认证信息通过SecurityContextHolder (使用ThreadLoacl 实现)进行传递的,所有的过滤器都是通过SecurityContextHolder来获取用户的认证信息,从而在一次请求中所有过滤器都能共享Authentication (认证),减少了HttpRequest参数的传送,下面的代码是从安全上下文的获取Authentication对象的方法:

1   SecurityContext context  =  SecurityContextHolder.getContext();
2  
3   Authentication authentication  =  context.getAuthentication();

但是,ThreadLoacl不能跨越多个请求存在,所 以,集成过滤器在请求开始时从Http会话中取出用户认证信息并创建一个SecurityContextHolder将Authentication对象 保存在其中,在请求结束之后,在从SecurityContextHolder中获取Authentication对象并将其放回Http会话中,共下次 请求使用,从而达到了跨越多个请求的目的。集成过滤器还有其它的实现,可以参考相关文档。

提示:
集成过滤器必须在其它过滤器之前被使用。
 

 

logoutFilter (退出过滤器) ,退出登录操作:

 1   < bean  id ="logoutFilter"
 2  
 3       class ="org.springframework.security.ui.logout.LogoutFilter" >
 4  
 5        < constructor-arg  value ="/index.jsp" />
 6  
 7        < constructor-arg >
 8  
 9           < list >
10  
11               <!--  实现了LogoutHandler接口(logout方法)  -->
12  
13               < ref  bean ="rememberMeServices" />
14  
15               < bean  class ="org.springframework.security.ui.logout.SecurityContextLogoutHandler" />
16  
17           </ list >
18  
19        </ constructor-arg >
20  
21   </ bean >

LogoutFilter 的构造函数需要两个参数,第一个是退出系统后系统跳转到的URL,第二个是一个LogoutHandler类型的数组,这个数组里的对象都实现了LogoutHandler接口,并实现了它的logout方法,用户在发送退出请求后,会一次执行LogoutHandler 数组的对象并调用它们的 logout方法 进行一些后续的清理操作,主要是从SecurityContextHolder对象中清楚所有用户的认证信息(Authentication对象),将用 户的会话对象设为无效,这些都时由SecurityContextLogoutHandler来完成。LogoutFilter还会清除Cookie记 录,它由另外一个Bean来完成(RememberMeServices )。

<ref bean="rememberMeServices"/> 标记指向了我们另外配置的一个Bean:

1   < bean  id ="rememberMeServices"     
        class
="org.springframework.security.ui.rememberme.TokenBasedRememberMeServices"
2       p:key ="springsecurity "
3     p:userDetailsService-ref ="userDetailsService" />

TokenBasedRememberMeServices 继承自系统的AbstractRememberMeServices 抽象类(实现了RememberMeServices和 LogoutHandler两个接口), RememberMeServices接口的loginSuccess方法 负责在用户成功登录之后将用户的认证信息存入Cookie中,这个类在后续的过滤器执行过程中也会被用到。

另一个userDetailsService 属性也是指向了我们配置的Bean, 它负责从数据库中读取用户的信息,这个类的详细配置将在后面的部分详细介绍,这里只是简单的认识一下。

过滤器链的下个配置的过滤器是authenticationProcessingFilter(认证过程过滤器) ,我们使用它来处理表单认证, 当接受到与 filterProcessesUrl 所定义相同的请求时 它开始工作 :

 1   < bean  id ="authenticationProcessingFilter"
 2  
 3       class ="org.springframework.security.ui.webapp.AuthenticationProcessingFilter"
 4  
 5       p:authenticationManager-ref ="authenticationManager"
 6       p:authenticationFailureUrl ="/login.jsp?login_error=1"
 7     p:defaultTargetUrl ="/default.jsp"
 8       p:filterProcessesUrl ="/j_spring_security_check"
 9     p:rememberMeServices-ref ="rememberMeServices" />

下面列出了认证过程过滤器配置中各个属性的功能:

    1.authenticationManager      认证管理器

    2.authenticationFailureUrl   定义登录失败时转向的页面

    3.defaultTargetUrl          定义登录成功时转向的页面

    4.filterProcessesUrl         定义登录请求的地址(在web.xml中配置过)

    5.rememberMeServices         在验证成功后添加cookie信息

这里也用到了rememberMeServices,如果用户认证成功,将调用RememberMeServices的loginSuccess方法 将用户认证信息写入Cookie中,这里也可以看到使用IoC的好处。

决定用户是否有权限访问受保护资源的第一步就是要确定用户 的身份,最常用的方式就是用户提供一个用户名和密码以确认用户的身份是否合法,这一步就是由认证过程过滤器调用 authenticationManager(认证管理器)来完成的。org.springframework.security.AuthenticationManager 接口定义了一个authenticate方法 ,它使用Authentication作为入口参数(只包含用户名和密码),并在验证成功后返回一个完整的Authentication对象(包含用户的权限信息GrantedAuthority 数组对象),authenticationProcessingFilter(认证过程过滤器)会将这个完整的Authentication对象存入SecurityContext 中, 如果认证失败 会抛出一个AuthenticationException并 跳转到authenticationFailureUrl 定义的URL。认证管理其配置如下:

 1   < bean  id ="authenticationManager"
 2  
 3   class ="org.springframework.security.providers.ProviderManager"
 4    p:sessionController-ref ="concurrentSessionController" >
 5        < property  name ="providers" >
 6           < list >
 7               < ref  bean ="daoAuthenticationProvider" />
 8               < bean
 9  
10   class ="org.springframework.security.providers.anonymous.AnonymousAuthenticationProvider"
11                 p:key ="springsecurity " />
12               < bean
13  
14   class ="org.springframework.security.providers.rememberme.RememberMeAuthenticationProvider"
15                 p:key ="springsecurity " />
16           </ list >
17        </ property >   
18   </ bean >

正如在配置中看到的一样,系统使用org.springframework.security.providers.ProviderManager (提供者管理器) 类作为认证管理器 的一个实现,事实上这个类是继承自实现了AuthenticationManager 接口的 AbstractAuthenticationManager类。需要注意的是ProviderManager (提供者管理器) 自己并不实现身份验证,而是把这项工作交给了多个认证提供者(提供者集合)或者说的多个认证来源。

Spring Security 登陆成功后的处理        Spring Security 完成登陆后一般需要一些自定义的处理,例如,记录登陆日志,初始化用户菜单等等 这里就需要自定义的 登陆成功处理了,Spring  提供了 AuthenticationSuccessHandler 接口,完成这个接口就可以了。 但是,修改到这里处理后,原先系统的自动转向处理就没有了,接口中应该怎么写,才可以保持原来的功能呢?   代码如下:   ... 阅读详情

相关推荐

spring security详解

1.概要 Spring是非常流行和成功的Java应用开发框架,SpringSecurity正是Spring家族中的成员。SpringSecurity基于Spring框架,提供了一套Web应用安全性的完整解决方案。正如你可能知道的关于安全方面的两个主要区域是“认证”和“授权”(或者访问控制),一般来说,Web应用的安全性包括用户认证(Authentication)和用户授权(Authorization)两个部分,这两点也是SpringSecurity重要核心功能。 (1)用户认证指的是:验证某个用户是否为系统

wumingdu1234的博客 7763

Spring Security 学习总结1_1

在认识Spring Security 之前,所有的权限验证逻辑都混杂在业务逻辑中,用户的每个操作以前可能都需要对用户是否有进行该项操作的权限进行判断,来达到认证授权的目的。类似这样的权限验证逻辑代码被分散在系统的许多地方,难以维护。AOP(Aspect Oriented Programming) 和Spring Security为我们的应用程序很好的解决了此类问题,正如系统日志,事务管理等这些...

ChocooM 146

Spring Boot中集成Spring Security 专题

当然,Spring Security明确的设计可以处理这种常见需求,但是作为替代你应该使用项目的域对象的安全能力来实现这个目标。例如在默认的安全配置中authorizeRequests(),formLogin()、httpBasic()这三个方法返回的分别是ExpressionUrlAuthorizationConfigurer、FormLoginConfigurer、HttpBasicConfigurer,他们都是SecurityConfigurer接口的实现类,分别代表的是不同类型的安全配置器。

2401_86940371的博客 2229

Spring Security 详解

​ Spring Security 是 Spring家族中的一个安全管理框架。相比与另外一个安全框架Shiro,它提供了更丰富的功能,社区资源也比Shiro丰富。一般来说中大型的项目都是使用SpringSecurity来做安全框架。小项目有Shiro的比较多,因为相比与SpringSecurity,Shiro的上手更加的简单。​ 一般Web应用的需要进行认证和授权。​ 而认证和授权也是SpringSecurity作为安全框架的核心功能。视频地址:​ 我们先要搭建一个简单的SpringBoot工程① 设置父工

qq_22075913的博客 12万+

Spring Security配置详细

Spring Security 是一个功能强大且高度可定制的身份验证和访问控制框架,专为基于Spring的应用程序设计。本教程将指导你如何在一个简单的Spring Boot应用程序中集成Spring Security,以实现基本的用户认证和授权功能。

2401_83447580的博客 2536

Spring Security 4 原理详解

场景: 用户通过提交username和password请求登陆 服务器验证身份信息是否正确 获取用户信息(包括角色集合) 利用3中的信息构建Security Context 在此之后,该用户的所有请求,Spring Security的访问控制机制将根据Security Context中的信息判断用户是否具有权限 以上,前3点即为认证,构建Security Context,为之后5的授权(访

lbqssss的博客 8445

Spring Security快速入门

目录1 Spring Security介绍2 创建工程2.1 创建maven工程2.2 Spring容器配置2.3 Servlet Context配置2.4 加载 Spring容器3 认证3.1 认证页面3.2.安全配置3.2.Spring Security初始化2.3.默认根路径请求2.4.认证成功页面2.5 测试4 授权5 小结 1 Spring Security介绍 Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。由于它是Sprin

赵广陆 1万+

【Spring Security系列】Spring Security 简介

Spring Security简介 官网:https://spring.io/projects/spring-security 中文文档:https://www.springcloud.cc/spring-security.html Spring Security 的前身是 Acegi Security,在被收纳为Spring子项目后正式更名为Spring Security。 在笔者成书时,Spring Security已经升级到5.1.3.RELEASE版...

qq_28248897的博客 1844

Spring Security团队正式宣布Spring Security OAuth终止维护

Spring Security团队正式宣布Spring Security OAuth终止维护。spring 官宣终止维护spring security oauth目前官网的主页已经高亮提醒大家彻底停止维护。官网已经通知EOL旧的Spring Security OAuth项目终止到2.5.2.RELEASE版本,该项目将不会再进行任何的迭代,包括Bug修复,之前胖哥已经提醒该项目即将停止维护,有心的同学已经进行了迁移。2020年就已经宣布了EOL时间表项目文档和代码仓库被移除目前该项目的官方文档已经正式从sp

资料免费分享,点击名片 1589

Spring Security学习——基于Java注解的Spring Security配置

基于Java注解的Spring Security配置           Spring在早期版本的时候,全是基于xml配置文件,导致配置极其繁杂。后期的版本中,Spring提供了对基于Java注解的支持。Java注解的Spring使每个Bean类有了自配置的特性,通过在每个类中添加相应的Java注解,就可以标注这些类在系统中的功能,可以大大减少配置文件的管理。当然,Java注解的Spring也

Benson的博客 1405

Spring Security和Spring Core 依赖冲突

#概述 本文,我们将介绍如何用Maven配置Spring Security,并介绍Spring Security依赖项的具体用例。大家可以在Maven Central上找到最新的Spring Security版本。 #spring-security-core Spring Security的核心是——spring-security-core, 它包含认证和访问权限控制功能。此外,它还支持独立(非web)应用程序、方法级别注解等功能。 <properties> <spring-se.

wenhaipan的博客 2385

spring security面试

spring security 是构建在一系列filter之上的,这些filter会拦截请求,检测身份信息并将其重定向到身份认证组件或者授权组件,我自己常用的是UsernamePasswordAuthenticationFilter + AuthenticManager + 真正的调用提供者Provider。每一个Filter都要有AuthenticManager ,从而可以用其调用authenticate方法,进而找到ProviderManager 中的Provider 的authenticate方法进行

mmmmhello的博客 1万+

Laravel 结合 jwt-auth 实现无状态 API 认证(实战解析)

本文详细解析了如何在Laravel框架中结合jwt-auth实现无状态API认证,包括JWT的优势、环境搭建、Token签发与刷新、API路由保护等实战内容。通过具体代码示例和优化技巧,帮助开发者高效解决跨域认证问题,提升系统安全性。

weixin_29315569的博客 211

【Spring Security】Spring Security 概念

摘要:Spring Security 是 Spring 官方的安全框架,提供认证(Authentication)和授权(Authorization)功能。其核心架构基于过滤器链(Filter Chain),通过拦截请求进行安全检查。核心组件包括: AuthenticationFilter:拦截请求并转换为认证对象 AuthenticationManager:管理认证流程 AuthenticationProvider:具体实现认证逻辑 特点: 支持多种认证方式(表单登录、JWT、OAuth2等) 模块化设计,

m0_72516377的博客 962

用AI+Playwright实现零代码UI自动化测试:以登录页面为例的实战指南

本文详细介绍了如何利用AI与Playwright结合实现零代码UI自动化测试,特别以登录页面为例进行实战演示。通过自然语言描述生成测试脚本,大幅降低技术门槛,提升测试效率,并支持跨浏览器验证。适合非技术人员快速上手专业级自动化测试。

weixin_28842269的博客 402

Win11 WSL2 Ubuntu 18.04 ROS Gazebo 图形渲染性能调优:从LLVM到NVIDIA GPU的完整指南

本文详细解决了在Win11 WSL2 Ubuntu 18.04环境中运行ROS Gazebo时图形渲染卡顿的问题。通过诊断默认LLVM软件渲染的瓶颈,指导用户更新Mesa驱动PPA源,并关键性地设置环境变量以强制启用NVIDIA GPU硬件加速,最终显著提升仿真性能与流畅度。

weixin_29204749的博客 282

Maven的Spring Security

1.概述 本文将说明如何使用Maven设置Spring Security,并介绍使用Spring Security依赖项的特定用例。 最新的Spring Security版本可以在Maven Central上找到。 这是上一篇有关Maven的Spring的后续文章 ,因此对于非安全性Spring依赖项,这是开始的地方。 2.使用Maven的Spring Security 2.1。 S...

最佳 Java 编程 1837

金蝶云星空应用开发初级考试题目汇总

摘要:本文为金蝶云星空应用开发初级考试题目汇总

2401_86113757的博客 3799

Spring Security基础

Spring Security基础 持续更新… 基本概念 何为认证? 用户认证就是判断一个用户的身份是否合法的过程,用户去访问系统资源时系统要求验证用户的身份信息,身份合法可继续访问,不合法则拒绝访问。常见的用户身份认证方式有:用户密码登录、二维码登录、手机短信登录、指纹认证等方式。 何为会话? 用户认证通过后,为了避免用户每次操作都进行认证可将用户的信息保存在会话中。会话就是系统为了保持当前用户的登录状态所提供的机制,常见的有基于session方式、基于token方式等。 基于session.

一夜星尘 3858

TwinCAT3入门教程3——PLC程序变量定义和硬件IO关联

目录 1、IO输入输出变量定义和硬件关联 1.1 IO输入 1.2 IO输出 1.3 PLC变量和IO模块关联 1.4 测试IO输出点 2、伺服变量关联 1、IO输入输出变量定义和硬件关联 1.1 IO输入 添加全局变量IO_Global 变量定义 (*==========================================IO输入===============================================================*)

panjinliang066333的博客 1万+

CST软件中SPICE模型的高效导出与转换技巧(txt到cir实战指南)

本文详细介绍了在CST Studio Suite中高效导出与转换SPICE模型的实战技巧,重点讲解了如何将txt格式的模型转换为通用的cir格式。内容涵盖三种模型存在形式的处理方法、格式检查与内容清理、端口一致性验证等关键步骤,并提供了利用LTspice Export功能、批处理脚本以及结果一致性校验等进阶指南,帮助工程师实现场路协同仿真模型的无缝迁移与应用。

silver的专栏 1185

spring security原理-从spring boot的逻辑里看spring security如何生效

本类的内容很简单,再次应用了跟Filter一样的责任链设计模式,只是要注意有一个RequestMatcher,也就是说,完全有可能我们通过提供的构造器之类的制作多个FilterChain,来实现组合实现不同接口有完全不同的鉴权登录行为,这一点后面讲。spring boot切入点找完后(写这么长才写完spring boot的,是真的心累),再看看demo例子,或者说我们平时如何使用spring security的呢?类,这也是Spring Security真正起作用的类了。

qq_43022896的博客 1225

YOLOv11涨点改进| TGRS 2026 顶刊| 注意力改进篇| 引入MSEA多尺度边缘感知注意力,助力红外小目标检测、遥感目标检测、工业缺陷检测、图像去雨雾任务高效涨点

🔥本文提出了一种基于MSEA多尺度边缘感知注意力的YOLOv11改进模型,通过增强网络对边缘、纹理和细粒度信息的感知能力,显著提升复杂背景下的目标检测性能。MSEA模块采用多尺度空洞卷积提取上下文特征,并通过边缘监督和注意力融合机制强化目标边界信息。实验表明该方法在小目标、边界模糊目标和复杂纹理目标检测任务中表现优异,尤其在遥感、工业缺陷和红外检测等场景具有显著优势。文章详细介绍了MSEA的结构原理、核心代码实现、模块配置方法以及三种YOLOv11改进方案.

Ai缝合怪、助力小伙伴高效发论文 185
上一篇: spring security总结
下一篇: flex+java
SuperBoo
博客等级 码龄18年 22粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值