浅谈Spring Security框架
Posted 敲代码的小小酥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅谈Spring Security框架相关的知识,希望对你有一定的参考价值。
前言
Spring Security作为一款安全框架,和Shiro一样,核心功能也是认证和授权。而对于web端的认证和授权,其本质也是通过各种Filter过滤器进行实现。本篇博文简单记录一下Spring Security为我们提供了哪些功能,以及Spring Security的实现原理。因为我们对Shiro框架做了一系列讲解,所以Spring Security框架就不再展开过于细致的讲解。他们基本套路都是大同小异。
Spring Security系列学习文章可参考:SpringSecurity
一、Spring Security基本功能及其周边
1.1 基本使用介绍
SpringBoot依赖SpringSecurity相关jar包后,就自动加上了拦截认证机制和登陆页面。不过登陆页面是shiro自带的。我们需要设置成自己的登陆页面。
SpringSecurity也有放行规则功能,需要在配置类中配置。有自定义认证逻辑开发。详情可参考SpringSecurity的初次邂逅
需要注意的是,重新定义成功界面时,Spring Security发出的是一个post请求,并不能直接跳转到新的登陆页面上,需要配置成controller里的请求,在controller里,进行登陆页面的跳转。如果是前后端分离的项目,那么controller里就需要配置成重定向,跳转到站外系统的登陆页面上。
用户登录的参数,默认必须为username和password,以及remember-me,SpringSecurity才可识别,可以通过配置,修改参数的名称。这都是SpringSecurity类里规定好的。
常用注解:
@Secured:用于专门判断是否具有某个角色。参数要以ROLE_开头。
需要在启动类或者SpringSecurity配置类上开启注解:
@EnableGlobalMethodSecurity( securedEnabled = true)
@PreAuthorize/@PostAuthorize:
@PreAuthorize表示在方法执行之前判断权限,@PostAuthorize表示在方法执行之后判断权限,这个注解很少用。
在启动类或SpringSecurity配置类上开启注解:
@EnableGlobalMethodSecurity(prePostEnabled = true)
CSRF:
跨站请求伪造。通俗点儿讲就是:比如你之前在浏览器上登陆了京东,现在的浏览器里有京东相关的cookie且还没过期。当你访问一个恶意网站时,恶意网站里隐藏了一个请求,这个请求就是去调用京东的支付请求,且携带你浏览器的cookie。这样,你的钱就被划走了。大概就是这个意思。
SpringSecurity提供了csrf的保护机制,默认是开启的,不过,在基于token验证的基础上,就不需要session的事情了,所以,一般基于token进行验证,都把csrf保护机制关闭掉了。
SpringSecurity的csrf保护机制原理可参考文章:CSRF详解
二、Spring Security原理介绍
SpringSecurity的本质就是一个过滤器链,网上关于其原理的讲解很多,这里就不再展开详细讲解,需要对SpringSecurity扩展或内部修改时,再进行学习即可。
开发者涨薪指南 48位大咖的思考法则、工作方式、逻辑体系以上是关于浅谈Spring Security框架的主要内容,如果未能解决你的问题,请参考以下文章
springboot学习总结Spring security原理浅谈