首页 > 其他分享 >spring security为啥是个垃圾框架?

spring security为啥是个垃圾框架?

时间:2023-09-16 12:00:14浏览次数:55  
标签:实现 spring 接口 token 为啥 authorities security

古时候写代码,权限这块写过一个库,基本就是一个泛型接口,里面有几个方法:

如验证输入的principal和credentials,返回token和authorities和roles,role就是一堆authorities集,也就说就是返回一堆authorities。然后每次请求会拿token找到authorities,然后再判断当前请求的资源(其实就是url)包不包括在authorities内。

这接口实现不复杂,也可很复杂自己实现,因为是接口,里面的方法参数都带了很多上下文,所以基本可以获取到所有有用的信息。当年用这接口几乎就没解决不了的权限问题。

后来用spring,更简单了,就是aop一下controller,然后类似那种接口鉴权,不aop就用filter或者拦截器一样的。

再后来,发现spring security粗略研究下。好呀,什么AuthenticationManager,AuthenticationProvider,UserDetailsService,SecurityContextHolder,SecurityInterceptor眼花缭乱,无从下手。而且,不知道是我没注意还是眼瞎,这玩意儿似乎和web或者webflux强耦合。当时有个需求是session(其实就是token)放在redis里,有个同事为实现这简单东西似乎要重写整个HttpSession类?

还有也是因为我们的权限配置是在另一个服务里,所以获取权限的时候要重写UserDetailsService?

不知道是我同事水平不够还是版本太老,反正看的我瑟瑟发抖。

有必要系统学习这东西吗?其实我看半天整个spring security实现的东西似乎和我自己的那种接口思想没什么区别。现在有新项目了,到底要不要系统学习spring security,是我理解太肤浅?

Spring Security就是个垃圾框架

这观点完全正确,因为他把所有扩展完全用接口概念去做,仅适合中小型项目。

对稍大项目,要求多端登录,设备标识等特殊需求实现起来异常复杂。一旦要变更,其给的接口根本无法满足企业需求。

shrio才是好框架,虽简单,但对经验丰富的程序员仅需2~3天就可实现所有spring security功能,且扩展性更强。

我为了学spring security花了一个月时间才掌握所有知识点,但概念太多,几个月后让我改登录,直接懵了。相信我,任何一个程序员面对spring security更新,加上隔几个月或半年之后,大部分人都懵逼,因为原有的接口不能用了。

而shrio则不同,接口实现几乎无变化,但是要求必须精通jwt和oauth协议。精通这两个协议,最多一周而且就算过几年,改登录需求,依然可以快速上手。

那些说spring security好的,大部分都是搞培训或装13,不要相信。

Sa-token也很香

之前粗略看spring security,没太看懂,sa-token跟着官方文档给项目里加了下,感觉真的简单,还能实现token自动续期的问题,太香!

本文由博客一文多发平台 OpenWrite 发布!

标签:实现,spring,接口,token,为啥,authorities,security
From: https://www.cnblogs.com/JavaEdge/p/17706549.html

相关文章

  • springmvc中异常配置的两种方式,一种使用注解配置,一种使用控制器配置
    2023-09-16方式一springmvc.xml<!--配置异常处理器--><beanclass="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"><propertyname="exceptionMappings"><props>......
  • springmvc中配置拦截器
    2023-09-16springmvc.xml<!--配置拦截器--><mvc:interceptors><mvc:interceptor><!--配置需要拦截的请求的请求路径--><mvc:mappingpath="/**"/><!--配置需要排除拦截的请求的请求路径-->......
  • 深入探讨Spring全家桶的AOP实现原理
    前言Spring全家桶是Java开发中最常用的框架之一,其中AOP是Spring框架的核心之一。本文将深入探讨Spring全家桶的AOP实现原理。AOP简介AOP(AspectOrientedProgramming)是一种编程范式,它通过在程序运行时动态地将代码切入到类的指定方法、指定位置上,实现对原有代码的增强。AOP的主......
  • 深入探讨Spring Security的Pre-Authentication
    什么是Pre-AuthenticationPre-Authentication是SpringSecurity中的一种认证方式,它是指在用户进行登录之前,就已经完成了认证。这种方式通常用于集成其他系统的认证机制,比如SSO(SingleSign-On)。Pre-Authentication的实现要实现Pre-Authentication,需要实现SpringSecurity中的Auth......
  • 深入探讨Spring Cloud的服务路由策略
    1.前言SpringCloud是一个开源的微服务框架,它提供了一系列的组件来帮助我们构建和管理微服务应用。其中,服务路由是SpringCloud中非常重要的一个组件,它可以帮助我们实现服务的负载均衡和故障转移。本文将深入探讨SpringCloud的服务路由策略,包括如何选择路由策略、如何配置路由策......
  • Spring Boot的生产环境部署
    概述SpringBoot是一个非常流行的JavaWeb框架,它提供了快速开发和部署的能力。但是,在生产环境中部署SpringBoot应用程序需要考虑很多因素,例如性能、安全性、可靠性等。本文将深入探讨SpringBoot的生产环境部署,并提供一些最佳实践。部署方式SpringBoot应用程序可以以多种方式......
  • 深入探讨Spring Cloud Stream的消息分区
    背景在分布式系统中,消息队列是一种常见的解决方案,它可以实现异步通信、解耦和削峰填谷等功能。SpringCloudStream是一个基于SpringBoot的消息驱动微服务框架,它提供了一种简单的方式来创建和管理消息驱动的微服务。其中一个重要的特性就是消息分区,本文将深入探讨SpringClou......
  • 【Spring事务底层实现原理】
    @Transactional注解Spring使用了TransactionInterceptor拦截器,该拦截器主要负责事务的管理,包括开启、提交、回滚等操作。当在方法上添加@Transactional注解时,Spring会在AOP框架中对该方法进行拦截,TransactionInterceptor会在该方法执行前后,对事务进行切面处理,Spring会基于该类生成......
  • springmvc中设置文件的上传与下载,首先需要导入依赖,之后需要在springmvc.xml中配置问价
    2023-09-16导入依赖<dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.4</version></dependency>设置文件上传解析器springmvc.xml<?xml......
  • Springboot+WebSocket 实现IM及时通讯
    1、Springboot集成Websocket集成分为三步:添加依赖、增加配置类和消息核心类、前端集成。1.1、添加依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId><version>2.1.13.RELEASE</version......