- 博客(22)
- 资源 (35)
- 收藏
- 关注
原创 结合开源软件kaptcha讲解登录验证码功能的实现
一、验证码生成之配置使用kaptcha使用google开源的验证码实现类库kaptcha,通过maven坐标引入<dependency> <groupId>com.github.penggle</groupId> <artifactId>kaptcha</artifactId> <version>2.3...
2019-11-29 13:37:31 1773
原创 图文详解应用登录验证码的多种实现方案
在本号的一系列Spring Security文章中,先后介绍了各种登录验证及授权中的知识点,如:spring-security简介并与shiro对比、 formLogin模式登录认证、动态数据登录验证与权限分配、账户多次登录失败锁定、RememberMe记住我功能,等等文章。笔者觉得以上的这些实际上都很简单,我们没有涉及到分布式应用。本节将以分布式的应用背景,讲解验证码实现的多种方式。本小节先从...
2019-11-29 07:51:32 1898
原创 Spring Security之多次登录失败后账户锁定功能的实现
在上一次写的文章中,为大家说到了如何动态的从数据库加载用户、角色、权限信息,从而实现登录验证及授权。在实际的开发过程中,我们通常会有这样的一个需求:当用户多次登录失败的时候,我们应该将账户锁定,等待一定的时间之后才能再次进行登录操作。一、基础知识回顾要实现多次登录失败账户锁定的功能,我们需要先回顾一下基础知识:Spring Security 不需要我们自己实现登录验证逻辑,而是将用户、角...
2019-11-28 07:44:56 5216 4
原创 SpringSecurity动态加载用户角色权限实现登录及鉴权
很多人觉得Spring Security实现登录验证很难,我最开始学习的时候也这样觉得。因为我好久都没看懂我该怎么样将自己写的用于接收用户名密码的Controller与Spring Security结合使用,这是一个先入为主的误区。后来我搞懂了:根本不用你自己去写Controller。你只需要告诉Spring Security用户信息、角色信息、权限信息、登录页是什么?登陆成功页是什么?或者其他...
2019-11-27 07:39:55 4112
原创 结合RBAC模型讲解权限管理系统需求及表结构创建
在本号之前的文章中,已经为大家介绍了很多关于Spring Security的使用方法,也介绍了RBAC的基于角色权限控制模型。但是很多朋友虽然已经理解了RBAC控制模型,但是仍有很多的问题阻碍他们进一步开发。比如:RBAC模型的表结构该如何创建?具体到某个页面,某个按钮权限是如何控制的?为了配合登录验证表,用户表中应该包含哪些核心字段?这些字段与登录验证或权限分配的需求有什么关系?...
2019-11-26 13:30:32 2249
原创 将Swagger2文档导出为HTML或markdown等格式离线阅读
网上有很多《使用swagger2构建API文档》的文章,该文档是一个在线文档,需要使用HTTP访问。但是在我们日常使用swagger接口文档的时候,有的时候需要接口文档离线访问,如将文档导出为html、markdown格式。又或者我们不希望应用系统与swagger接口文档使用同一个服务,而是导出HTML之后单独部署,这样做保证了对接口文档的访问不影响业务系统,也一定程度提高了接口文档的安全性。核...
2019-11-26 07:58:15 4314
原创 图文详解基于角色的权限控制模型RBAC
我们开发一个系统,必然面临权限控制的问题,即不同的用户具有不同的访问、操作、数据权限。形成理论的权限控制模型有:自主访问控制(DAC: Discretionary Access Control)、强制访问控制(MAC: Mandatory Access Control)、基于属性的权限验证(ABAC: Attribute-Based Access Control)等。最常被开发者使用也是相对易用、...
2019-11-25 12:22:10 4840
原创 SpringSecurity退出功能实现的正确方式
本文将介绍在Spring Security框架下如何实现用户的"退出"logout的功能。其实这是一个非常简单的功能,我见过很多的程序员在使用了Spring Security之后,仍然去自己写controller方法实现logout功能,这种做法就好像耕地,你有机械设备你不用,你非要用牛。一、logout最简及最佳实践其实使用Spring Security进行logout非常简单,只需要在s...
2019-11-25 07:50:00 2568 2
原创 结合Spring Security进行web应用会话安全管理
在本文中,将为大家说明如何结合Spring Security 和Spring Session管理web应用的会话。一、Spring Security创建使用session的方法Spring Security提供4种方式精确的控制会话的创建:always:如果当前请求没有session存在,Spring Security创建一个session。ifRequired(默认): Spring...
2019-11-22 07:40:12 1676
原创 使用Spring安全表达式控制系统功能访问权限
一、SPEL表达式权限控制从spring security 3.0开始已经可以使用spring Expression表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。Spring Security可用表达式对象的基类是SecurityExpressionRoot。表达式函数描述hasRole([role])用户拥有指定的角色时返回true (Spring sec...
2019-11-21 08:03:59 1692
原创 结合参数接收响应转换原理讲解SpringBoot常用注解
一、常用注解回顾1.1 @RequestBody与@ResponseBody//注意并不要求@RequestBody与@ResponseBody成对使用。public @ResponseBody AjaxResponse saveArticle(@RequestBody ArticleVO article)如上代码所示:@RequestBody修饰请求参数,注解用于接收HTTP...
2019-11-19 08:10:26 1704
原创 详解Spring Security的formLogin登录认证模式
一、formLogin的应用场景在本专栏之前的文章中,已经给大家介绍过Spring Security的HttpBasic模式,该模式比较简单,只是进行了通过携带Http的Header进行简单的登录验证,而且没有定制的登录页面,所以使用场景比较窄。对于一个完整的应用系统,与登录验证相关的页面都是高度定制化的,非常美观而且提供多种登录方式。这就需要Spring Security支持我们自己定制登录...
2019-11-16 10:30:05 6913 1
原创 java应用性能调优之详解System的gc垃圾回收方法
一、什么是System.gc()?System.gc()是用Java,C#和许多其他流行的高级编程语言提供的API。当它被调用时,它将尽最大努力从内存中清除垃圾(即未被引用的对象)。名词解释:GC,Garbage Collection,垃圾回收,下文会经常使用。二、谁可以调用System.gc()?System.gc()可以从应用程序堆栈的各个部分调用:您自己开发的应用程序可以显式的...
2019-11-13 07:50:24 1739
原创 参与国际化项目需遵循的java命名规范
笔者最近帮助一些朋友应聘远程工作(一般都是一些国外的项目),国外的项目负责人一般都会要求提供github账号或者一些源代码,很多朋友在这一关就被筛选掉了,其中不乏一些我认为技术非常厉害的行业大牛,他们都研发过很多的大型项目,经验与技术实力都非常不错。那究竟是为什么呢?我经过仔细的研究,发现他们都有一个共同点,就是命名规范不太严谨。我对这些在应聘远程项目第一关就被筛选掉了的程序员做了一个问卷调查:你...
2019-11-13 07:42:36 1526
原创 Java Stream函数式编程第三篇:管道流结果处理
一、Java Stream管道数据处理操作在本号之前写过的文章中,曾经给大家介绍过 Java Stream管道流是用于简化集合类元素处理的java API。在使用的过程中分为三个阶段。在开始本文之前,我觉得仍然需要给一些新朋友介绍一下这三个阶段,如图:第一阶段(图中蓝色):将集合、数组、或行文本文件转换为java Stream管道流第二阶段(图中虚线部分):管道流式数据处理操作,处理管...
2019-11-12 07:48:19 2054
原创 详解SpringBoot应用跨域访问解决方案
一、什么是跨域访问说到跨域访问,必须先解释一个名词:同源策略。所谓同源策略就是在浏览器端出于安全考量,向服务端发起请求必须满足:协议相同、Host(ip)相同、端口相同的条件,否则访问将被禁止,该访问也就被称为跨域访问。虽然跨域访问被禁止之后,可以在一定程度上提高了应用的安全性,但也为开发带来了一定的麻烦。比如:我们开发一个前后端分离的易用,页面及js部署在一个主机的nginx服务中,后端接口...
2019-11-11 08:23:32 1801
原创 对比讲解lambda表达式与传统接口函数实现方式
在本号之前写过的一些文章中,笔者使用了lambda表达式语法,一些读者反映说代码看不懂。本以为java 13都已经出了,java 8中最重要特性lambda表达式大家应该都掌握了,实际上还是存在大量的程序员没有使用java8,还有的使用了java8也不会使用lambda表达式。所以,写这篇文章还是有必要的,如果您觉得我的文章对您有帮助,期待您的关注。Lambda表达式是Java 8最流行最常用...
2019-11-08 07:55:58 1740
原创 使用Spring Data JPA进行数据分页与排序
一、导读如果一次性加载成千上万的列表数据,在网页上显示将十分的耗时,用户体验不好。所以处理较大数据查询结果展现的时候,分页查询是必不可少的。分页查询必然伴随着一定的排序规则,否则分页数据的状态很难控制,导致用户可能在不同的页看到同一条数据。那么,本文的主要内容就是给大家介绍一下,如何使用Spring Data JPA进行分页与排序。二、实体定义我们使用一个简单的实体定义:Article(...
2019-11-07 08:00:35 1948
原创 在SpringBoot中使用flyway进行数据库版本管理
本文大纲flyway是什么能帮助我们解决什么问题springboot环境下使用flywayflyway的工作原理一、flyway是什么Flyway是一个开源的数据库版本管理工具,并且极力主张“约定大于配置”,简单、专注、强大。可以使用SQL完成数据同步,或者基于特定数据库的语法(例如PL / SQL,T-SQL等)或Java代码(适用于高级数据转换或处理LOB)的方式编写。...
2019-11-05 08:47:40 2139
原创 持久层框架JPA与Mybatis该如何选型
一、现状描述目前java 持久层ORM框架应用最广泛的就是JPA和Mybatis。JPA只是一个ORM框架的规范, 对该规范的实现比较完整就是Spring Data JPA(底层基于Hibernate实现),是基于Spring的数据持久层框架,也就是说它只能用在Spring环境内。Mybatis也是一个优秀的数据持久层框架,能比较好的支持ORM实体关系映射、动态SQL等。笔者在学习这两个框架的...
2019-11-04 08:40:54 2710 1
原创 如何在Spring Boot中使用Cookies
一、 导读本文大纲读取HTTP Cookie设置HTTP Cookie读取所有Cookie[]为Cookie设置过期时间Https与CookieHttpOnly Cookie删除CookieHTTP Cookie(也称为Web cookie,浏览器cookie)是服务器在用户浏览器中存储的小部分数据。服务器端应用程序在返回浏览器请求响应的时候设置cookie,浏览器存储...
2019-11-03 09:39:52 2267
原创 使用Java8 Stream API对Map按键或值进行排序
一、什么是Java 8 Stream使用Java 8 Streams,我们可以按键和按值对映射进行排序。下面是它的工作原理:将Map或List等集合类对象转换为Stream对象使用Streams的sorted()方法对其进行排序最终将其返回为LinkedHashMap(可以保留排序顺序)sorted()方法以Comparator作为参数,从而可以按任何类型的值对Map进行排序。...
2019-11-02 12:44:24 6025 1
java8-集合元素归约.pdf
2022-07-10
java8-Stream元素的匹配与查找.pdf
2022-07-10
Kubernetes修炼手册 ((英)奈吉尔·波尔顿(Nigel Poulton)) .epub
2022-07-02
使用Oracle 官方JDK11构建docker镜像的Dockerfile及源文件
2022-04-03
Screenshot_2022-03-21-11-01-24-639_net.csdn.csdnplus.png
2022-03-21
kafka单机版自动安装shell脚本
2022-02-19
HTTP 超全汇总.pdf
2020-08-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人