spring Security

spring Security简单介绍:

Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架,它是用于保护基于Spring的应用程序的实际标准。

 

Spring Security是一个框架,致力于为Java应用程序提供身份验证和授权。与所有Spring项目一样,Spring Security的真正强大之处在于可以轻松扩展以满足自定义要求。

简单实现

public class SecurityConfig extends WebSecurityConfigurerAdapter
{

    @Override
    protected void configure(HttpSecurity httpSecurity) throws Exception {
        ExpressionUrlAuthorizationConfigurer<HttpSecurity>.ExpressionInterceptUrlRegistry registry = httpSecurity
                .authorizeRequests();
        //不需要保护的资源路径允许访问
        for (String url : ignoreUrlsConfig().getUrls()) {
            registry.antMatchers(url).permitAll();

        }
        //允许跨域请求的OPTIONS请求
        registry.antMatchers(HttpMethod.OPTIONS)
                .permitAll();
        // 任何请求需要身份认证
        registry.and()
                .authorizeRequests()
                .anyRequest()
                .authenticated()
                // 关闭跨站请求防护及不使用session
                .and()
                .csrf()
                .disable()
                .sessionManagement()
                .sessionCreationPolicy(SessionCreationPolicy.STATELESS)
                // 自定义权限拒绝处理类
                .and()
                .exceptionHandling()
                .accessDeniedHandler(restfulAccessDeniedHandler())
                .authenticationEntryPoint(restAuthenticationEntryPoint())
                // 自定义权限拦截器JWT过滤器
                .and()
                .addFilterBefore(jwtAuthenticationTokenFilter(), UsernamePasswordAuthenticationFilter.class);
    }

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.userDetailsService(userDetailsService())
                .passwordEncoder(passwordEncoder());
    }


    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }

    @Bean
    public JwtAuthenticationTokenFilter jwtAuthenticationTokenFilter() {
        return new JwtAuthenticationTokenFilter();
    }

    @Bean
    @Override
    public AuthenticationManager authenticationManagerBean() throws Exception {
        return super.authenticationManagerBean();
    }

    @Bean
    public RestfulAccessDeniedHandler restfulAccessDeniedHandler() {
        return new RestfulAccessDeniedHandler();
    }

    @Bean
    public RestAuthenticationEntryPoint restAuthenticationEntryPoint() {
        return new RestAuthenticationEntryPoint();
    }

    @Bean
    public IgnoreUrlsConfig ignoreUrlsConfig() {
        return new IgnoreUrlsConfig();
    }

    @Bean
    public JwtTokenUtil jwtTokenUtil() {
        return new JwtTokenUtil();
    }

}

具体实现请查看我的上传资源spring security实现

热门文章

暂无图片
编程学习 ·

ubuntu软件安装

ubuntu软件安装apt和apt-getdpkg源码安装 apt和apt-get 在ubuntu安装软件时常用命令apt-get install xxx命令来安装。从字面上理解install即是安装的意思,get即获取的意思,apt此处理解为工具名称,全称 Advanced Packaging Tool(APT)字义是先进的包装工具,但在linux系统中…
暂无图片
编程学习 ·

taro开发微信小程序 -- 下拉刷新和上拉加载

参考文档:https://taro-docs.jd.com/taro/docs/tutorial#%E9%A1%B9%E7%9B%AE%E7%9B%AE%E5%BD%95%E7%BB%93%E6%9E%84其实和微信小程序一样,只要设置页面配置信息并添加对应函数即可class Index extends Component {// 添加小程序页面配置信息config: {enablePullDownRefresh: …
暂无图片
编程学习 ·

COMP暴涨 风险暗藏

作者|JX kin编辑|文刀6月29日,在以太坊上构建的DeFi借贷协议Compound,因资金规模首超10亿美元引起市场关注,更受关注的是该协议的治理代币COMP近期的暴涨暴跌。从几十美元到400多美元再到如今的200多美元,COMP这趟过山车仅仅开了不到半个月。6月16日,自Compound以“流动性…
暂无图片
编程学习 ·

lex yacc flex bison

简介 lex与yacc是两个在Unix下的分别作词法分析和语法分析的工具, Linux对应flex与bison。 Yacc 与 Lex 快速入门 flex 和bison的安装和使用 Windows下安装lex(flex)与yacc(bison)
暂无图片
编程学习 ·

小白爬虫--Xpath定位信息--举一反三

断断续续学了好多次爬虫,始终没抓到重点,最近两天终于摸到点门路,发现定位信息是最重要的,定位好了,再借助解析库就可以提取想要的信息了。 基本套路如下:(爬虫三部曲) 第一,抓取网页源代码 url = “你爬取信息的网址” headers = 请求头 import requests r0 = reques…
暂无图片
编程学习 ·

python如何写数据到csv文件中

使用csv保存数据是一种非常常见的方式,csv数据也很方便移植到excel中去经常会遇到这样的问题,我有一百行数据一百列数据,我应该怎么快速放到excel里面去,我的答案是先保存到csv中,然后再复制粘贴到excel中。代码如下import csvresults_file = open(results.csv,w, newline…
暂无图片
编程学习 ·

MySQL数据类型(最大值和最小值--类型定义的值)

MySQL数据类型定义的值:1、整型MySQL数据类型含义(有符号)tinyint(m)1个字节 范围(-128~127)smallint(m)2个字节 范围(-32768~32767)mediumint(m)3个字节 范围(-8388608~8388607)int(m)4个字节 范围(-2147483648~2147483647)bigint(m)8个字节 范围(+-9.22*10的18次方)取…
暂无图片
编程学习 ·

vue前端代码优化-1

也许有人会感觉CR没有什么卵用,只要我代码实现了功能,我完成了开发任务,我就OK了,为啥还要CR??但是CR真的是有必要的,你不仅可以发现自己代码中的不足之处,待优化点,简洁明了的代码易读别人接手也会很快。1. 比如在vue项目中只有某一个组件用某一个特别长的常量对象,…
暂无图片
编程学习 ·

近三位数增长,苏宁银行金融科技之花结出普惠金融之果

文|曾响铃来源|科技向令说(xiangling0815)美联储无限QE,2020年中国不设GDP目标,2万亿直达基层扶危纾困……国内疫情已经基本控制,经济基本面迎来全面复苏阶段,作为市场中最活跃的存在之一,小微企业在复苏过程中,面临的融资难等问题也被热议。在中国有一群喊着帮助小微企…
暂无图片
编程学习 ·

哈夫曼编码

哈夫曼编码 输入一个字符串文本 #include <stdio.h> #include <stdlib.h> #include <string.h>#define cmax 0x3f3f3f3f // 宏定义一个较大的数,作为比较数据 #define cmaxsize 10000 // 宏定义数组的长度 // ---构建哈夫曼树 // ---定义哈夫曼…
暂无图片
编程学习 ·

Z字型变换(Go,LeetCode)

目录题目描述解决方案代码代码走读传送门题目描述将一个给定字符串根据给定的行数,以从上往下、从左到右进行Z字形排列。比如输入字符串为 LEETCODEISHIRING ,行数为3时,排列如下:L C I R E T O E S I I G E D H N之后,你的输出需要从左往右逐行读取,产生出一…
暂无图片
编程学习 ·

C++ 11 之 移动语义 左值引用 完美转发

C++ 11 的 移动语义,左值引用 ,完美转发 三部分相互关联。阅读 两本数的相关章节即可完全掌握。首先是,强烈推荐IBM XL编译器开发团队推出的《深入理解C++11》3.3章节,内容讲解到为,鞭辟入里,自成系统,开发编译器的人果然对语言的理解很到位。其次是,《Effective Mocer…
暂无图片
编程学习 ·

学术论文写作漫谈

超星尔雅学术论文写作漫谈章节测验答案1.1 高校学生学术论文写作现状1【单选题】根据调研结果显示,目前高校大一学生在论文写作方面的主要困难不包括()。 答案:不知写多少字A、不知如何选题B、不知如何查资料C、不知写多少字D、不知学术规范标准2【单选题】根据调研,学生认为写…
暂无图片
编程学习 ·

大厂程序员因厌恶编程,辞去月薪2w+的工作去当司机?

世界好小啊,刚在一个 UP 主的群里看到一个视频,标题叫做:“失业了工作没找到,却稀里糊涂上了知乎热搜,2000 多万人围观,我…” 说实话,看到视频的封面,我的下巴当时就掉到了手机上,这不就是知乎热搜上那个视频的猪脚嘛——热搜的标题叫做“如何看待互联网大厂程序员因…
暂无图片
编程学习 ·

网络安全技术及应用第3版 主编贾铁军等——教材习题 期末重点 复习题 知识提炼(第4章 黑客攻防与检测防御)

参考教材:网络安全技术及应用 第3版 主编贾铁军等 第4章 黑客攻防与检测防御填空题简答题论述题 填空题 (1)端口扫描的 防范也称为 系统“加固”,主要有 防止IP地址的扫描 和(关闭 闲置及有潜在危险 端口)。 (2)(分布式拒绝服务攻击DDoS)就是利用更多的傀儡机对目标发…
暂无图片
编程学习 ·

ChainDesk:深入MSP成员管理与Fabric CA服务实现-走进MSP

目标 MSP 概念及作用MSP 的组成结构MSP 在 Hyperledger Fabric 中的应用任务实现 数据隐私及安全是区块链技术中的的重要组成部分,联盟链中由多个不同的组织组成,且每一个组织又可以由多个节点组成,那么在 Hyperledger Fabric 中使用了什么且如何确保数据隐私及安全,在这一…
暂无图片
编程学习 ·

Codeforces 1093D Beautiful Graph(二分图染色+组合数学)

传送门发这篇只是为了记录一个容易TLE的坑点:对于这种多组数据,所有数据n之和不超过3e5的题,初始化的时候要for 1 to n,而不能memset,否则比如30000组数据每组n为10,那么如果memset进行30000次的复杂度就会炸......#include<cstdio> #include<cstring> #incl…
暂无图片
编程学习 ·

conda命令配置gee的本地python环境

conda命令配置gee的本地python环境科学上网及谷歌账号下载安装包及创建python环境安装其他库Conda添加国内镜像conda config --add channels认证使用设置代理 科学上网及谷歌账号 谷歌账号申请需要一点时间,教育账号邮箱认证比较方便。 下载安装包及创建python环境 conda crea…
暂无图片
编程学习 ·

为什么程序员应该写博客?用什么博客系统?

内容简介 1、写博客的态度 2、写博客的好处 3、用什么博客系统 . 前言 作为程序员,我们敲代码的时候很轻快,键盘上噼里啪啦,「弹指间,樯橹灰飞烟灭」。但是,不少程序员不喜欢写东西。 当然,人都是有惰性的,要跨出这一步不容易。我开始得也有点晚,不过晚总比不开始好。 …