该篇记录一下SecurityContextHolder与SecurityContext两个类,当然还有与它们关系密码的SecurityContextPersistenceFilter.java这个过滤器 1. SecurityContext.java 查看spring security的源码,发现它就是个接口,spring security提供了一个默认的实现SecurityContextImpl.java. 仔细一看,该类其实就是对Authentication对象进行了封装,当然,覆写了equ…
作用:保留系统当前的安全上下文细节,其中就包括当前使用系统的用户的信息.   上下文细节怎么表示?     用SecurityContext对象来表示   每个用户都会有它的上下文,那这个SecurityContext保存在哪里呢? 存储在一个SecurityContextHolder中,整个应用就一个SecurityContextHolder.   SecurityContextHolder存储SecurityContext的方式? 这要考虑到应用场景. (1)单机系统,即应用从开启到关闭的整…
Spring 是一个非常流行和成功的 Java 应用开发框架.Spring Security 基于 Spring 框架,提供了一套 Web 应用安全性的完整解决方案.一般来说,Web 应用的安全性包括用户认证(Authentication)和用户授权(Authorization)两个部分.用户认证指的是验证某个用户是否为系统中的合法主体,也就是说用户能否访问该系统.用户认证一般要求用户提供用户名和密码.系统通过校验用户名和密码来完成认证过程.用户授权指的是验证某个用户是否有权限执行某个操作.在一…
目录 1.1     Filter顺序 1.2     添加Filter到FilterChain 1.3     DelegatingFilterProxy 1.4     FilterChainProxy 1.5     Spring Security定义好的核心Filter 1.5.1    FilterSecurityInterceptor 1.5.2    ExceptionTranslationFilter 1.5.3    SecurityContextPersistenceFilt…
Spring Security 的底层是通过一系列的 Filter 来管理的,每个 Filter 都有其自身的功能,而且各个 Filter 在功能上还有关联关系,所以它们的顺序也是非常重要的. 1.Spring Security的内置Filter 执行顺序 Spring Security 已经定义了一些 Filter,不管实际应用中你用到了哪些,它们应当保持如下顺序. ChannelProcessingFilter,如果你访问的 channel 错了,那首先就会在 channel 之间进行跳转,…
Spring Security 主要实现了Authentication(认证,解决who are you? ) 和 Access Control(访问控制,也就是what are you allowed to do?,也称为Authorization).Spring Security在架构上将认证与授权分离,并提供了扩展点. 核心对象 主要代码在spring-security-core包下面.要了解Spring Security,需要先关注里面的核心对象. SecurityContextHold…
Alias Filter Class Namespace Element or Attribute CHANNEL_FILTER ChannelProcessingFilter http/intercept-url@requires-channel SECURITY_CONTEXT_FILTER SecurityContextPersistenceFilter http CONCURRENT_SESSION_FILTER ConcurrentSessionFilter session-manag…
源码请移步至:https://github.com/aquariuspj/spring-security/tree/translator/docs/manual/src/docs/asciidoc 版本号:5.0.x 参考手册 [翻译自官方GIT - 2018.06.12] Spring Security参考手册 Spring Security是一个强大且高度可定制的身份验证和访问控制框架. 这是保护基于Spring的应用程序的事实标准. 前言 Spring Security为基于Java EE…
1.概述 在这篇快速文章中,我们将重点介绍如何以编程方式在Spring Security和Spring MVC中设置经过身份验证的用户. 2. Spring Security 简而言之,Spring Security在ThreadLocal中保存每个经过身份验证的用户的主要信息 - 保存的是Authentication对象. 为了构造和设置此Authentication对象,通常我们需要使用Spring Security在标准身份验证上构建对象的相同方法. 要让我们手动触发身份验证,然后将生成的…
可能你会觉得奇怪,我们在web应用中使用Spring Security时只在web.xml文件中定义了如下这样一个Filter,为什么你会说是一系列的Filter呢?    <filter>       <filter-name>springSecurityFilterChain</filter-name>      <filter-class>org.springframework.web.filter.DelegatingFilterProxy</…
整体概述 运行时环境 Spring Security 3.0需要Java 5.0 Runtime Environment或更高版本. 核心组件 SecurityContextHolder,SecurityContext和Authentication Objects 最基本的对象是SecurityContextHolder.这是我们存储应用程序当前安全上下文的详细信息的地方,其中包括当前使用该应用程序的主体的详细信息.默认情况下,SecurityContextHolder使用ThreadLocal…
Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方式的安全框架.它包括认证(Authentication)和授权(Authorization)两个部分. 用户认证指的是验证某个用户是否为系统中的合法主体,也就是说用户能否访问该系统.用户认证一般要求用户提供用户名和密码.系统通过校验用户名和密码来完成认证过程.用户授权指的是验证某个用户是否有权限执行某个操作. 一般来说,系统会为不同的用户分配不同的角色,而每个角色则对应一系列的权限.   spr…
一.基本环境搭建 父pom依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.3.RELEASE</version> </parent> 1. 添加pom依赖: <dependency> <groupId&…
写在前面 需要提前了解的内容有 springboot.springSecurity.activiti基本使用 关于activiti Activiti项目是一项新的基于Apache许可的开源BPM平台,从基础开始构建,旨在提供支持新的BPMN 2.0标准,包括支持对象管理组(OMG),面对新技术的机遇,诸如互操作性和云架构,提供技术实现. activiti主要应用场景 需要动态地改变流程的业务流程场景.例如请假流程.项目审批流程等. 正题 第一步: 新建一个springboot项目,引入activ…
权限管理是每个项目必备的功能,只是各自要求的复杂程度不同,简单的项目可能一个 Filter 或 Interceptor 就解决了,复杂一点的就可能会引入安全框架,如 Shiro, Spring Security 等. 其中 Spring Security 因其涉及的流程.类过多,看起来比较复杂难懂而被诟病.但如果能捋清其中的关键环节.关键类,Spring Security 其实也没有传说中那么复杂.本文结合脚手架框架的权限管理实现(jboost-auth 模块,源码获取见文末),对 Spring…
SpringSecurity原理 主要过滤器链 SpringSecurity的功能主要是由一系列的过滤器链相互配合完成的.验证一个过滤器之后放行到下一个过滤器链,然后到最后. 认证流程 过滤器作用 SecurityContextPersistenceFilter:会在每次请求处理之前从配置好的SecurityContextRepository中获取SecurityContext安全上下文信息,然后加载到SecurityContextHolder中,然后在该次请求处理完成之后,将SecurityC…
目录 1.1     认证过程 1.2     Web应用的认证过程 1.2.1    ExceptionTranslationFilter 1.2.2    在request之间共享SecurityContext 1.1     认证过程 1.用户使用用户名和密码进行登录. 2.Spring Security将获取到的用户名和密码封装成一个实现了Authentication接口的UsernamePasswordAuthenticationToken. 3.将上述产生的token对象传递给Aut…
在springsecurity 中,我们一般可以通过代码: SecurityContext securityContext = SecurityContextHolder.getContext(); Authentication auth = securityContext.getAuthentication(); 获取当前登录人员信息,其实我们可以从SecurityContext 获取 springsecurity 实现的秘密. 就让我从SecurityContextHolder 一步步抽丝剥…
前言 本文主要整理一下SecurityContext的存储方式. SecurityContext接口 顾名思义,安全上下文.即存储认证授权的相关信息,实际上就是存储"当前用户"账号信息和相关权限.这个接口只有两个方法,Authentication对象的getter.setter. package org.springframework.security.core.context; import java.io.Serializable; import org.springframewo…
转至:Elim的博客http://elim.iteye.com/blog/2161648 Filter Porxy DelegatingFilterProxy DelegationFilterProxy不是spring security的入口,它其实是spring的一个代理类(org.springframework.web.filter.DelegatingFilterProxy),作用是将spring 与 spring security融合. 它内部代理的是spring scurity的Fil…
位于过滤器顶端,第一个起作用的过滤器.SecurityContextPersistenceFilter 在执行其他过滤器之前,率先判断用户的session中是否已经存在一个SecurityContext了.如果存在,就把SecurityContext拿出来,放到SecurityContextHolder中,供Spring Security的其他部分使用.如果不存在,就创建一个SecurityContext出来,还是放到SecurityContextHolder中,供Spring Security…
Python学习--04条件控制与循环结构 条件控制 在Python程序中,用if语句实现条件控制. 语法格式: if <条件判断1>: <执行1> elif <条件判断2>: <执行2> elif <条件判断3>: <执行3> else: <执行4> 注意语句后面的冒号:.像经典的C.Java都是以花括号来区分代码块,但是Python没有使用花括号表示,而是缩进,所以一定需要了解它们的语法区别. 示例: age = 3…
Ubuntu 14.04中Elasticsearch集群配置 前言:本文可用于elasticsearch集群搭建参考.细分为elasticsearch.yml配置和系统配置 达到的目的:各台机器配置成功,可以达到如下效果: elasticsearch节点组成集群,对外来看俨如一台机器 elasticsearch节点的内存得到优化调整 一. elasticsearch.yml配置 network.host: "172.16.0.4" #这里可以是内网ip.机器名 bootstrap.ml…
在网上找了很多方法都失败了,原因是大多数方法都是用mbr方式安装的,如grub4dos,easybcd.以至于连自己都怀疑win8能不能用硬盘安装,差点就去买个u盘来安装了,就在打算放弃的时候在ubuntu论坛里看到了一个置顶的帖子,对win8硬盘安装讲的很详细,终于按照他的方法把ubuntu装上去了,现在讲讲自己安装中遇到的坑. 参考:http://forum.ubuntu.org.cn/viewtopic.php?f=77&t=467746 在Win8基础上加装Ubuntu,得先搞清楚Win…
使用win10远程控制ubuntu16.04,网上很多需要安装xfce桌面的.今天介绍一下,不需要安装其他桌面,使用Ubuntu16.04自带桌面,漂亮美观. Ubuntu16.04端: 1.打开终端,安装xrdp,vncserver sudo apt-get install xrdp vnc4server xbase-clients 2.安装desktop sharing(Ubuntu16.04默认已经安装),可以到应用商店下载.打开desktop sharing,设置如下: 3.安装安装dc…
在网上查了下,起初是下载了一个node-v0.12.7-linux-x64.tar.gz,解压在/home/node路径下,然后在/etc/profile中添加如下命令: export NODE_HOME=/home/node/node-v0.12.7-linux-x64export PATH=$PATH:$NODE_HOME/binexport NODE_PATH=$NODE_HOME/lib/node_modules 配置环境变量,然后执行 source /etc/profile 让prof…
首先第一步是设置ubuntu server 12.04版更新源,推荐中科大的比较快:deb http://debian.ustc.edu.cn/ubuntu/ precise main multiverse restricted universedeb http://debian.ustc.edu.cn/ubuntu/ precise-backports main multiverse restricted universedeb http://debian.ustc.edu.cn/ubuntu…
1. 前言 近日有感许多新朋友想尝试使用Jexus,不过绝大多数都困惑徘徊在Linux如何安装啊,如何编译Mono啊,如何配置Jexus啊...等等基础问题,于是昨日向宇内流云兄提议,不如搞几个配置好的虚拟机镜像让新朋友先尝尝Jexus,感受Jexus的性能再慢慢学配置,何不更好?今日小弟决定坐言起行,先弄一个镜像共享出来,抛砖引玉,希望日后有同好共享更多平台的镜像出来,让更多朋友更容易一睹Jexus之美 \(^o^)/~ 2. 配置虚拟机(熟悉Ubuntu Server的大大请略过 1 & 2…
总所周知,ASP.NET是微软公司的一项技术,是一个网站服务端开发的一种技术,它可以在通过HTTP请求文档时再在Web服务器上动态创建它们,就是所谓动态网站开发,它依赖运行于 IIS 之中的程序 .但是从成本上面来讲,Linux(开源)系统的花费比Windows Server系列少得多.因此,更多的企业愿意采用Linux作为服务器系统.由于ASP.NET依赖于IIS,导致有部分创业型公司在技术选型上会将ASP.NET筛选掉.我们伟大的程序猿,为了能让ASP.NET运行在Linux系统上,Mono…
deepsooncms在Ubuntu 14.04上部署教程 一.安装mono1.在命令行运行sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF echo "deb http://download.mono-project.com/repo/debian wheezy main" | sudo tee /etc/apt/sources.…