01 2019 档案
摘要:一、事务的四大特性 ACID 只有满足一致性,事务的执行结果才是正确的。 在无并发的情况下,事务串行执行,隔离性一定能够满足。此时要只要能满足原子性,就一定能满足一致性。 在并发的情况下,多个事务并发执行,事务不仅要满足原子性,还需要满足隔离性,才能满足一致性。 事务满足持久化是为了能应对数据库奔溃
阅读全文
摘要:一、logback的介绍 Logback是由log4j创始人设计的另一个开源日志组件,官方网站: http://logback.qos.ch。它当前分为下面下个模块: logback-core:其它两个模块的基础模块 logback-classic:它是log4j的一个改良版本,同时它完整实现了sl
阅读全文
摘要:MD5 的特性 bcrypt 加密算法 加密的随机盐和加密的幂次,和加密算法的版本号已经被存储到了真正的密文中; 为什么SpringSecurity弃用md5而用bcrypt 在使用穷举法暴力破解中,md5算法生成一个密文用时在微秒级,也就是说,一个6位密码的所有组合,通过穷举只需要40秒。 而使用
阅读全文
摘要:文章目录 一、认证流程 二、多个请求共享认证信息 三、获取用户认证信息 一、认证流程 (1) 用户发起表单登录请求后,首先进入 UsernamePasswordAuthenticationFilter: 在 UsernamePasswordAuthenticationFilter 中根据用户输入的用
阅读全文
摘要:文章目录 一、自定义认证成功、失败处理 1.1 CustomAuthenticationSuccessHandler 1.2 CustomAuthenticationFailureHandler 1.3 修改 WebSecurityConfig 1.4 运行程序二、Session 超时三、限制最大登
阅读全文
摘要:在第一篇中,我们说过,用户<–>角色<–>权限三层中,暂时不考虑权限,在这一篇,是时候把它完成了。 为了方便演示,这里的权限只是对角色赋予权限,也就是说同一个角色的用户,权限是一样的。当然了,你也可以精细化到为每一个用户设置权限,但是这不在本篇的探讨范围,有兴趣可以自己实验,原理都是一样的。 文章目
阅读全文
摘要:通过前面三篇文章,你应该大致了解了 Spring Security 的流程。你应该发现了,真正的 login 请求是由 Spring Security 帮我们处理的,那么我们如何实现自定义表单登录呢,比如添加一个验证码… 源码地址:https://github.com/jitwxs/blog_sam
阅读全文
摘要:源码地址:https://github.com/jitwxs/blog_sample 文章目录 一、常见异常二、源码分析三、处理异常不知道你有没有注意到,当我们登陆失败时候,Spring security 帮我们跳转到了 /login?error Url,奇怪的是不管是控制台还是网页上都没有打印错误
阅读全文
摘要:在上一章:SpringBoot集成Spring Security(1)——入门程序中,我们实现了入门程序,本篇为该程序加上自动登录的功能。 文章目录 一、修改login.html二、两种实现方式 2.1 Cookie 存储 2.2 数据库存储 2.2.1 基本原理 2.2.2 代码实现三、运行程序
阅读全文
摘要:因为项目需要,第一次接触 Spring Security,早就听闻 Spring Security 功能强大但上手困难,学习了几天出入门道,特整理这篇文章希望能让后来者少踩一点坑(本文附带实例程序,请放心食用) 本篇文章环境:SpringBoot 2.0 + Mybatis + Spring Sec
阅读全文
摘要:目录 1.1 intercept-methods定义方法权限控制 1.2 使用pointcut定义方法权限控制 1.3 使用注解定义方法权限控制 1.3.1 JSR-250注解 1.3.2 @Secured注解 1.3.3 支持表达式的注解 1.4 方法权限控制的拦截器 1.4.1 MethodSe
阅读全文
摘要:首先request对象代表客户端的一次请求,可以用它来存储客户端请求的一些参数。 getParameter()方法 该方法是用于客户端通过get或者post传递过来的参数,它的返回值类型永远是是字符串类型 注意,这里强调的是客户端请求时,是客户端发送给服务器的参数,这个赋值动作是有客户端完成的。 例
阅读全文
摘要:这篇文章是自己学习方便用的,作者:http://www.cnblogs.com/shangxiaofei/p/5328377.html 一、目录 1.概念 2.生命周期 3.职责 4.执行过程 二、内容 概念 1.servlet:servlet是一种运行服务器端的java应用程序,具有独立于平台和协
阅读全文
摘要:以下内容是翻译自http://www.journaldev.com/1945/servletcontextlistener-servlet-listener-example: 说明:web.xml的加载顺序是:【Context-Param】->【Listener】->【Filter】->【Servl
阅读全文
摘要:过滤器的基本概念 Servlet过滤器从字面上的字意理解为经过一层次的过滤处理才达到使用的要求,而其实Servlet过滤器就是服务器与客户端请求与响应的中间层组件,在实际项目开发中Servlet过滤器主要用于对浏览器的请求进行过滤处理,将过滤后的请求再转给下一个资源。 Filter是在Servlet
阅读全文
摘要:1.1 检测session超时 1.2 concurrency-control 1.3 session 固定攻击保护 Spring Security通过http元素下的子元素session-management提供了对Http Session管理的支持。 1.1 检测session超时 Spring
阅读全文
摘要:要实现退出登录的功能我们需要在http元素下定义logout元素,这样Spring Security将自动为我们添加用于处理退出登录的过滤器LogoutFilter到FilterChain。当我们指定了http元素的auto-config属性为true时logout定义是会自动配置的,此时我们默认退
阅读全文
摘要:目录 1.1 通过表达式控制URL权限 1.2 通过表达式控制方法权限 1.2.1 使用@PreAuthorize和@PostAuthorize进行访问控制 1.2.2 使用@PreFilter和@PostFilter进行过滤 1.3 使用hasPermission表达式 Spring Securi
阅读全文
摘要:目录 1.1 authorize 1.2 authentication 1.3 accesscontrollist Spring Security也有对Jsp标签的支持的标签库。其中一共定义了三个标签:authorize、authentication和accesscontrollist。其中auth
阅读全文
摘要:一、概述 一般用数据库保存用户的密码都是经过加密,甚少使用明文。同时,加密方式一般采用不可逆的加密方法,如MD5。也要避免相同的密码在加密后有相同的密文,如admin用户的密码为admin,加密后变成ceb4f32325eda6142bd65215f4c0f371,加入另外一个用户user,他的密码
阅读全文
摘要:一 , 概述 在现代密码学诞生以前,就已经有很多的加密方法了。例如,最古老的斯巴达加密棒,广泛应用于公元前7世纪的古希腊。16世纪意大利数学家卡尔达诺发明的栅格密码,基于单表代换的凯撒密码、猪圈密码,基于多表代换的维吉尼亚密码,二战中德军广泛使用的恩格玛加密机….但最终都找到了有效的破解算法。 现代
阅读全文
摘要:一、前言 Spring Security系列教程中,前五篇为同一人所写,而本文是博主依据第三方文章整合而出,与前五篇文章的作者不是同一系列。 但本文以前五篇文章为基础,在前面文章所建立的Spring Security的基础上,整合SpringMVC框架。 二、配置文件 spring-mvc.xml配
阅读全文
摘要:url-pattern问题 spring用到forward("/WEB-INF/jsp/*.jsp")而forward当然是又要经过web.xml的映射的,然后,在URL匹配时, <url-pattern> / </url-pattern> 不会匹配到*.jsp,不会进入spring的Dispatc
阅读全文
摘要:在之前的几篇security教程中,资源和所对应的权限都是在xml中进行配置的,也就在http标签中配置intercept-url,试想要是配置的对象不多,那还好,但是平常实际开发中都往往是非常多的资源和权限对应,而且写在配置文件里面写改起来还得该源码配置文件,这显然是不好的。因此接下来,将用数据库
阅读全文
摘要:在前面三个博客的例子中,登陆页面都是用的Spring Security自己提供的,这明显不符合实际开发场景,同时也没有退出和注销按钮,因此在每次测试的时候都要通过关闭浏览器来注销达到清除session的效果。 一 自定义页面 login.jsp: <%@ page language="java" c
阅读全文
摘要:在上一篇博客中讲解了用Spring Security自带的默认数据库存储用户和权限的数据,但是Spring Security默认提供的表结构太过简单了,其实就算默认提供的表结构很复杂,也不一定能满足项目对用户信息和权限信息管理的要求。那么接下来就讲解如何自定义数据库实现对用户信息和权限信息的管理。
阅读全文
摘要:上一篇博客中,Spring Security教程(一),我把用户信息和权限信息放到了xml文件中,这是为了演示如何使用最小的配置就可以使用Spring Security,而实际开发中,用户信息和权限信息通常是被保存在数据库中的,为此Spring Security也提供了通过数据库获得用户权限信息的方
阅读全文
摘要:一 概要 Spring Security,这是一种基于 Spring AOP 和 Servlet 过滤器的安全框架。它提供全面的安全性解决方案,同时在 Web 请求级和方法调用级处理身份确认和授权。这里过多的spring security解释和作用就不在这里赘述了,请自行搜索。目前最新版本的Spri
阅读全文
摘要:java关于报错:The reference to entity "characterEncoding" must end with the ';' delimiter. Java 解析XML文件错误。 错误信息提示代码类似如下: The reference to entity "character
阅读全文
摘要:(1)思路说明; (a)首先这里我们需要重新认识一个类ThreadPoolTaskScheduler:线程池任务调度类,能够开启线程池进行任务调度。 (b)ThreadPoolTaskScheduler.schedule()方法会创建一个定时计划ScheduledFuture,在这个方法需要添加两个
阅读全文
摘要:定时任务实现的几种方式: Timer:这是java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务。使用这种方式可以让你的程序按照某一个频度执行,但不能在指定时间运行。一般用的较少。 ScheduledExecutorService:也jdk自带
阅读全文
摘要:目录结构: Timer和TimerTask 一个Timer调度的例子 如何终止Timer线程 关于cancle方式终止线程 反复执行一个任务 schedule VS. scheduleAtFixedRate 一些注意点 1. Timer和TimerTask Timer是jdk中提供的一个定时器工具,
阅读全文
摘要:首先我们先回顾一下传统拦截器的写法: 第一步创建一个类实现HandlerInterceptor接口,重写接口的方法。 第二步在XML中进行如下配置,就可以实现自定义拦截器了 SpringBoot实现自定义拦截器方法: 第一步创建一个类实现HandlerInterceptor接口,重写接口的方法,只是
阅读全文
摘要:注解的分类 按运行机制分: 源码注解:只在源码中存在,编译后不存在 编译时注解:源码和编译后的class文件都存在(如@Override,@Deprecated,@SuppressWarnings) 运行时注解:能在程序运行时起作用(如spring的依赖注入) 按来源分: 来自JDK的注解 第三方的
阅读全文
摘要:Java™ Servlet API 是主流服务器端 Java 的基本构建块,也是 Java EE 技术的一部分,例如,用于 Web 服务的 JAX - RS、JSF (JavaServer Faces) 和 JSP (JavaServer Pages)。Java servlet 也独立存在,提供一系
阅读全文
摘要:Servlet 3.0 新特性概述 Servlet 3.0 作为 Java EE 6 规范体系中一员,随着 Java EE 6 规范一起发布。该版本在前一版本(Servlet 2.5)的基础上提供了若干新特性用于简化 Web 应用的开发和部署。其中有几项特性的引入让开发者感到非常兴奋,同时也获得了
阅读全文