202208-12 java SpringSecurity使用详解 目录SpringSecurity1、pom.xml简介1、pom.xml2、Security的controller3、路径转发的controller注销及权限控制1、导入依赖thymeleof整合security2、html命名空间3、根据用户的登录状态进行判断显示该有的信息4、根据源码写表单name属性5、实现有什么权限显示什么样的信息6、注销logout-404总结SpringSecurityshrio,SpringSecurity:认证,授权(VIP1,vip2…)功能权限访问权限菜单权限拦截器,过滤器:大量的原生... 继续阅读 >
202206-27 springsecurity中http.permitall与web.ignoring的区别说明 目录springsecurityhttp.permitAll与web.ignoring的区别web.ignoring()与permitAll总结springsecurityhttp.permitAll与web.ignoring的区别这两个都是继承WebSecurityConfigurerAdapter后重写的方法http.permitAll不会绕开springsecurity验证,相当于是允许该路径通过web.ignoring是直接绕开springsecurity的所有filter,直接跳过验证web.ignoring()与permitAllAnonymousAuthenticationFilter,创建认证信息的地... 继续阅读 >
202206-27 springSecurity之如何添加自定义过滤器 目录springSecurity添加自定义过滤器很简单,配置如下然后再来看看myFilterspringSecurity自定义认证过滤器出现的问题解决方法springSecurity添加自定义过滤器我们知道,springSecurity其实就是将过滤器和aop进行整合。其实我们也可以添加自己的过滤器。很简单,配置如下<httpuse-expressions="false"entry-point-ref="loginEntryPoint"><intercept-urlpattern="/user.jsp"access="ROLE_USER,ROLE_ADMIN"/><intercept-u... 继续阅读 >
202205-30 带你详细了解Spring Security的注解方式开发 目录默认情况下,不会开启注解,如果想用注解,需要开启注解支持。总结默认情况下,不会开启注解,如果想用注解,需要开启注解支持。在启动类上开启:@EnableGlobalMethodSecurity(securedEnabled=true)@SpringBootApplication@ComponentScan(basePackages={"com.example"})//开启springSecurity注解支持@EnableGlobalMethodSecurity(securedEnabled=true)publicclassSeqeurityTestApplication{publicstaticvoidm... 继续阅读 >
202205-17 Springsecurity Oauth2如何设置token的过期时间 1.设置token的过期时间如果我们是从数据库来读取客户端信息的话我们只需要在数据库设置token的过期时间1.1oauth_client_details表每个列的作用client_id:客户端的id用于唯一标识每一个客户端(client);注册时必须填写(也可以服务端自动生成),这个字段是必须的,实际应用也有叫app_keyresource_ids:资源服务器的id,多个用,(逗号)隔开客户端能访问的资源id集合,注册客户端时,根据实际需要可选择资源id,也可以根据不同的额... 继续阅读 >
202204-30 SpringSecurity实现动态url拦截(基于rbac模型) 目录1、了解主要的过滤器1、SecurityMetadataSource2、UserDetailsService3、AccessDecisionManager2、正式实战了1使用idea的SrpingInitializr创建一个项目我的版本如下Pom.xml2,创建一个springSecurity配置类,你也可以使用配置文件的方法。我这里使用了boot的配置类3、自定义SecurityMetadataSource拦截器后续会讲解如何实现方法拦截。其实与url拦截大同小异。拦截方法,会更简单一点吧基于PermissionEvaluator可以自行先... 继续阅读 >
202204-30 SpringSecurity数据库进行认证和授权的使用 目录一、准备工作1.1导入相关依赖1.2配置信息1.3数据库准备1.4实体类的创建1.5Dao层的创建1.6Service层的编写1.7Security配置1.8密码加密1.9测试结果在前面的文章中,我们介绍了SpringSecurity基于内存的一些基本使用方法,但在真实的业务场景中,用户的账号、密码以及角色信息肯定都是存放在数据库中的,所以我们需要从数据库中来加载认证和授权的数据。一、准备工作如下案例是基于上一篇中的案例改造而来,所以建议先... 继续阅读 >
202202-21 springsecurity基于token的认证方式 目录前言基于token的表单登录基于token的短信验证码登录基于token的社交登录简化的OAuth的授权改造标准的OAuth授权改造关于用户的绑定之前的社交登录绑定用户自定义providerSignUtils总结前言上一篇博客简析了一下springsecurityoauth中生成AccessToken的源码,目的就是为了方便我们将原有的表单登录,短信登录以及社交登录的认证方法,都改造成基于AccessToken的认证方式基于token的表单登录在简析了springsecurityoauth的源... 继续阅读 >
202109-17 SpringSecurity整合jwt权限认证的全流程讲解 JWT本文代码截取自实际项目。jwt(JsonWebToken),一个token,令牌。简单流程:用户登录成功后,后端返回一个token,也就是颁发给用户一个凭证。之后每一次访问,前端都需要携带这个token,后端通过token来解析出当前访问对象。优点1、一定程度上解放了后端,后端不需要再记录当前用户是谁,不需要再维护一个session,节省了开销。2、session依赖于cookie,某些场合cookie是用不了的,比如用户浏览器cookie被禁用、移动端无法存... 继续阅读 >
202109-16 SpringSecurityOAuth2 如何自定义token信息 GitHub地址码云地址OAuth2默认的token返回最多只携带了5个参数(client_credentials模式只有4个没有refresh_token)下面是一个返回示例:{"access_token":"1e93bc23-32c8-428f-a126-8206265e17b2","token_type":"bearer","refresh_token":"0f083e06-be1b-411f-98b0-72be8f1da8af","expires_in":3599,"scope":"authapi"}然后我们需要的token可能需要增加username等自定义参数:{"access_token":"1e... 继续阅读 >
202109-16 springboot+springsecurity如何实现动态url细粒度权限认证 谨记:Url表只储存受保护的资源,不在表里的资源说明不受保护,任何人都可以访问1、MyFilterInvocationSecurityMetadataSource类判断该访问路径是否被保护@Component//用于设置受保护资源的权限信息的数据源publicclassMyFilterInvocationSecurityMetadataSourceimplementsFilterInvocationSecurityMetadataSource{@BeanpublicAntPathMatchergetAntPathMatcher(){returnnewAntPathMatcher();... 继续阅读 >
202109-10 关于SpringSecurity配置403权限访问页面的完整代码 目录1、未配置之前2、开始配置 2.1新建一个unauth.html2.2在继承WebSecurityConfigurerAdapter的配置类中设置2.3继承UserDetailsService接口的实现类3、测试1、未配置之前2、开始配置 2.1新建一个unauth.html<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title></head><body><h1>没有访问的权限</h1></body></html>2.2在继承WebSecurityConfigurerAdapter的配置类中设置关键... 继续阅读 >
202108-12 解决SpringSecurity 一直登录失败的问题 springsecurity是spring提供的关于登录授权的框架,他提供了controller层的服务,只需要我们自己实现service层和dao层,以及一些相关的配置错误结果以及调试信息笔者初次使用springsecurity,登录一直显示错误,郁闷的一批,代码debug调试结构调试结果显示service层返回controller层的结果里面全部正确,最后一个List参数也符合权限配置结果仍旧返回失败,经过两个小时的各种跪求,找到了原因。解决方案原来,springsecurity安... 继续阅读 >
202106-23 SpringSecurity整合springBoot、redis实现登录互踢功能 背景基于我的文章——《SpringSecurity整合springBoot、redistoken动态url权限校验》。要实现的功能是要实现一个用户不可以同时在两台设备上登录,有两种思路:(1)后来的登录自动踢掉前面的登录。(2)如果用户已经登录,则不允许后来者登录。需要特别说明的是,项目的基础是已经是redis维护的session。配置redisHttpSession设置springsession由redis管理。2.1去掉yml中的httpsession配置,yml和注解两者只选其一(同时配置... 继续阅读 >
202103-07 Spring Security 自定义短信登录认证的实现 自定义登录filter上篇文章我们说到,对于用户的登录,security通过定义一个filter拦截login路径来实现的,所以我们要实现自定义登录,需要自己定义一个filter,继承AbstractAuthenticationProcessingFilter,从request中提取到手机号和验证码,然后提交给AuthenticationManager:publicclassSmsAuthenticationFilterextendsAbstractAuthenticationProcessingFilter{publicstaticfinalStringSPRING_SECURITY_FORM_PHONE_K... 继续阅读 >
202102-21 SpringSecurity构建基于JWT的登录认证实现 最近项目的登录验证部分,采用了JWT验证的方式。并且既然采用了SpringBoot框架,验证和权限管理这部分,就自然用了SpringSecurity。这里记录一下具体实现。在项目采用JWT方案前,有必要先了解它的特性和适用场景,毕竟软件工程里,没有银弹。只有合适的场景,没有万精油的方案。一言以蔽之,JWT可以携带非敏感信息,并具有不可篡改性。可以通过验证是否被篡改,以及读取信息内容,完成网络认证的三个问题:“你是谁”、... 继续阅读 >