一个能为DaoAuthenticationProvider提供存取认证库的的类,它必须要实现UserDetailsService接口: public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException, DataAccessException; public UserDetails loadUserByUsername(String username) throws UsernameNo…
前面已经讲过关于保护Web资源的方式,其中包括直接在XML文件中配置和自定义实现FilterInvocationDefinitionSource接口两种方式.在实际企业应用中,保护Web资源非常重要,它是保障Web应用安全性的关键部分.有了它,我们的Web应用就显得更加安全了.的确,部分Web应用有了它已经足够了.但许多时候却有这样的场景,某企业的系统允许用户A查看数据,但不允许他修改或删除数据:而用户B不但可以查看数据,而且可以修改和删除数据.此时,前面所说的保护Web资源的方式就无法满足这个…
Acegi应用到实际项目中(1)是基于BasicProcessingFilter的基本认证,这篇改用AuthenticationProcessingFilter基于表单的认证方式. 1.authenticationProcessingFilter 处理认证请求(通常是一个登录页面的表单请求).当身份验证成功时,AuthenticationProcessingFilter会在会话中放置一个Authentication对象,并且重定向到登录成功页面 authenticationFailureUrl…
一个能为DaoAuthenticationProvider提供存取认证库的的类,它必须要实现UserDetailsService接口: public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException, DataAccessException; UserDetails 是一个接口,它能提供一系列get函数以获得认证时需要的基本认证信息如用户名.密码.所获得的授权.是否禁用等:一个具体的实…
在默认情况下,即在用户未提供自身配置文件ehcache.xml或ehcache-failsafe.xml时,EhCache会依据其自身Jar存档包含的ehcache-failsafe.xml文件所定制的策略来管理缓存.如果用户在classpath下提供了ehcache.xml或ehcache-failsafe.xml文件,那么EhCache将会应用这个文件.如果两个文件同时提供,那么EhCache会使用ehcache.xml文件的配置.EhCache内容如下: <ehcache xmlns:xs…
在此,本人声明,我处于菜鸟阶段,文章的内容大部分摘自zhanjia的博客(http://zhanjia.iteye.com/category/43399),旨在学习,有很多地方,我理解不够透彻,可能存在不合理的地方,请大家多担待. 如需了解关于Acegi的相关内容,请点击:http://www.cnblogs.com/cainiaomahua/p/8806357.html 一般来说,Acegi的配置主要包括两个方面的内容:web.xml中过滤器的配置和Acegi安全文件的配置. 一.web.xm…
有这样一些场合,系统用户必须以其他角色身份去操作某些资源.例如,用户A要访问资源B,而用户A拥有的角色为AUTH_USER,资源B访问的角色必须为AUTH_RUN_AS_DATE,那么此时就必须使用户A拥有角色AUTH_RUN_AS_DATE才能访问资源B. 为了实现这一需求,Acegi提供了Run-As认证服务.下面举例说明如何应用Run-As认证服务. 1.用于配置Run-As认证服务的接口与实现类 public interface IRunAsDate { public void show…
在某些应用场合中,可能需要用到切换用户的功能,从而以另一用户的身份进行相关操作.这一点类似于在Linux系统中,用su命令切换到另一用户进行相关操作. 既然实际应用中有这种场合,那么我们就有必要对其进行研究,以求在需要时把它加入到应用中.那么,接下来我们就来研究下如何在Acegi中实现切换用户的功能. 一般来说,切换用户功能是从高级用户切换到普通用户,从而以普通用户的身份来进行一些操作.相反,普通用户通常是不能切换为高级用户的,如果可以的话那就是越权了. 实现步骤:1. 添加SwitchUser…
在实际应用中,开发者有时需要将Web资源授权信息(角色与授权资源之间的定义)存放在RDBMS中,以便更好的管理.事实上,一般的企业应用都应当如此,因为这样可以使角色和Web资源的管理更灵活,更自由.那么,应当如何实现这个需求呢?在接下来将一一解说. 我们都知道,一般Web资源授权信息的配置类似如下代码: <bean id="filterInvocationInterceptor" class="org.acegisecurity.intercept.web.Filter…
实际企业应用中,用户密码一般都会进行加密处理,这样才能使企业应用更加安全.既然密码的加密如此之重要,那么Acegi(Spring Security)作为成熟的安全框架,当然也我们提供了相应的处理方式. 针对用户密码的加密工作,DaoAuthenticationProvider同时暴露了passwordEncoder和saltSource属性.PasswordEncoder和SaltSource是可选的属性,PasswordEncoder负责对认证库中的密码进行加解密.而SaltSource则是在…
此节介绍:ConcurrentSessionFilter. 在Acegi 1.x版本中,控制并发HttpSession和Remember-Me认证服务不能够同时启用,它们之间存在冲突问题. 在一些应用场合,企业可能需要限制同一帐号在同一时间登录到同一Web应用的次数,即控制并发HttpSession的数量.比如,在同一时间,只允许javaee/password用户在服务器存在一个或若干个活动HttpSession.Acegi内置了HttpSession的并发控制支持,为我们提供了方便.为了启用这…
此节将要了解的是AnonymousProcessingFilter.RememberMeProcessingFilter和LogoutFilter三个过滤器 1.AnonymousProcessingFilter 在大部分企业应用中,存在许多不需要用户登录就可以访问的资源,比如登录页面.退出页面.主页等.鉴于此,Acegi提供了匿名认证服务.这样能够使所有的Web资源得到保护,而不是某些资源不设权限控制,让任何人访问,这样Acegi使Web安全策略模型应用的非常完美.与此同时,SecurityC…
在企业应用中,用户的用户名.密码和角色等信息一般存放在RDBMS(关系数据库)中.前面几节我们采用的是InMemoryDaoImpl,即基于内存的存放方式.这节我们将采用RDBMS存储用户信息. UserDetailsService的接口实现有JdbcDaoImpl和InMemoryDaoImpl.JdbcDaoImpl通过数据库获取用户名.密码和角色信息,它将是接下来的重点内容. 1.简单JdbcDaoImpl配置 默认时, JdbcDaoImpl会采用如下SQL获得用户名.密码.启用状态:…
在<vue-cli搭建的项目中增加后台mock接口>中实现了后台mock,但是前端post的t数据都要在mock的后台接口中使用req的接收数据事件获取http协议body中的数据. req.on('data', function(chunk){ //接收字节数据 }); req.end('data', function(){ //转换||处理 }); req.error('error', function(e){ //处理错误 }); 如果前端需要使用cookie,后端要读取,那么在后台mo…
前面已经讲过关于保护Web资源的方式,其中包括直接在XML文件中配置和自定义实现FilterInvocationDefinitionSource接口两种方式.在实际企业应用中,保护Web资源显得非常重要,它是保障Web应用安全性的关键部分.有了它,我们的Web应用就显得更加安全了.的确,部分Web应用有了它已经足够了.但许多时候却有这样的场景,某企业的系统允许用户A查看数据,但不允许他修改或删除数据:而用户B不但可以查看数据,而且可以修改和删除数据.此时,前面所说的保护Web资源的方式就无法满足…
相信不少朋友们对于学习Acegi的过程是比较痛苦的,而且可能最初一个例子都没能真正运行起来.即使能运行起来,对于里面那么多的配置,更搞不清楚为什么要那么配,多配一个和少配一个究竟有什么区别? 最终头都大了^_^ 基于各方面的原因,本人决定写一系列关于Acegi从简单到复杂应用的文章,一方面是对自己学习Acegi的总结,而另一方面又对想学习研究Acegi的朋友们有所帮助. 关于Acegi的介绍,网上有很多相关资料,在此我就省略不写了,但我建议朋友们最好先对Acegi有所了解再来看我的文章. 在此,…
在webpack-simple模板中,包括webpck模板.一个.vue文件就是一个组件. 为什么会这样呢?因为webpack干活了!webpack的将我们所有的资源文件进行打包.同时webpack还能将我们的html(template).css.js文件通过模板编译的方式将这些文件打包成一个.vue的文件. 为什么在vue-cli项目中能使用.vue的文件? 比如有这之前的一个自定义的组件: Vue.component('app-header', { template: '<div>A cu…
用vue-cli搭建一个前端开发环境确实是极其方便,在写前端代码肯定也是少不了需要调用后台提供的业务接口进行前后端交互,特别在敏捷开发中,前后端都要提前确定业务接口并进行打桩,在开发过程中基本是没有现成的后台可以调用,基本上都是自己写mock进行模拟. 在vue-cli搭建的项目中,框架上用的是express的web框架,要做一个mock是很方便的. 假设前端页面上需要获取所有的新闻列表,那么就需要mock一个能够返回所有新闻列表数据的接口. 接下来就在项目中实现mock功能. 脚手架生成项目…
有些时候你对第三方得到jar包中的类并不是很满意,想根据实际情况做一些扩展.如果说第三方的jar包已经提供了一些可扩展的类,比如提供了Interceptor,Filter或者其他的类,那么使用原生的比较保险一些.但是如果说并没有提供这些,那就要走一些不寻常的路.这里我总结了一些可行的方法,有的优雅,有的则是不得已而为之的. 一.继承你想要扩展的类,重写想要扩展的方法 这种做法是比较好的,符合面向对象的思想.另外动作比较小,风险也不会很大.但是这种方法有个前提是,被扩展的类在扩展点能用这个子类去替…
首先讲讲EhCache.在默认情况下,即在用户未提供自身配置文件ehcache.xml或ehcache-failsafe.xml时,EhCache会依据其自身Jar存档包含的ehcache-failsafe.xml文件所定制的策略来管理缓存.如果用户在classpath下提供了ehcache.xml或ehcache-failsafe.xml文件,那么EhCache将会应用这个文件.如果两个文件同时提供,那么EhCache会使用ehcache.xml文件的配置.EhCache内容如下: <ehca…
本篇参考: https://developer.salesforce.com/docs/atlas.en-us.216.0.apexcode.meta/apexcode/apex_classes_keywords_sharing.htm https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_classes_with_security_enforced.htm 一. Currency 处理 我们在…
在某些应用场合中,我们可能需要用到切换用户的功能,从而以另一用户的身份进行相关操作.这一点类似于在Linux系统中,用su命令切换到另一用户进行相关操作.      既然实际应用中有这种场合,那么我们就有必要对其进行研究,以求在需要时把它加入到应用中.那么,接下来我们就来研究下如何在Acegi中实现切换用户的功能. 一般来说,切换用户功能是从高级用户切换到普通用户,从而以普通用户的身份来进行一些操作.相反,普通用户通常是不能切换为高级用户的,如果可以的话那就是越权了. 实现步骤:1. 添加Swi…
有这样一些场合,系统用户必须以其他角色身份去操作某些资源.例如,用户A要访问资源B,而用户A拥有的角色为AUTH_USER,资源B访问的角色必须为AUTH_RUN_AS_DATE,那么此时就必须使用户A拥有角色AUTH_RUN_AS_DATE才能访问资源B.尽管这种场合相对较少,但存在即合理,总会有需要的时候,要学会未雨绸缪.      为了实现这一需求,Acegi为我们提供了Run-As认证服务.下面我们举例说明如何应用Run-As认证服务. 1.用于配置Run-As认证服务的接口与实现类 p…
在实际企业应用中,用户密码一般都会进行加密处理,这样才能使企业应用更加安全.既然密码的加密如此之重要,那么Acegi(Spring Security)作为成熟的安全框架,当然也我们提供了相应的处理方式. 针对用户密码的加密工作,DaoAuthenticationProvider同时暴露了passwordEncoder和saltSource属性.PasswordEncoder和SaltSource是可选的属性,PasswordEncoder负责对认证库中的密码进行加解密.而SaltSource则是…
今天就讲个ConcurrentSessionFilter. 在Acegi 1.x版本中,控制并发HttpSession和Remember-Me认证服务不能够同时启用,它们之间存在冲突问题,这是该版本的一个Bug,希望他们尽快改进!!关于这方面的资料,网上很多有说,不明白的朋友可以去了解了解. 在一些应用场合,企业可能需要限制同一帐号在同一时间登录到同一Web应用的次数,即控制并发HttpSession的数量.比如,在同一时间,只允许javaee/password用户在服务器存在一个或若干个活动H…
在企业应用中,用户的用户名.密码和角色等信息一般存放在RDBMS(关系数据库)中.前面几节我们采用的是InMemoryDaoImpl,即基于内存的存放方式.这节我们将采用RDBMS存储用户信息. UserDetailsService的接口实现有JdbcDaoImpl和InMemoryDaoImpl.JdbcDaoImpl通过数据库获取用户名.密码和角色信息,它将是接下来的重点内容. 1.简单JdbcDaoImpl配置 默认时, JdbcDaoImpl会采用如下SQL获得用户名.密码.启用状态:…
7) daoAuthenticationProvider 进行简单的基于数据库的身份验证.DaoAuthenticationProvider获取数据库中的账号密码并进行匹配,若成功则在通过用户身份的同时返回一个包含授权信息的Authentication对象,否则身份验证失败,抛出一个AuthenticatiionException. <bean id="daoAuthenticationProvider" class="org.acegisecurity.provide…
这一节我们将要了解的是AnonymousProcessingFilter.RememberMeProcessingFilter和LogoutFilter三个过滤器. 1.AnonymousProcessingFilter 在大部分企业应用中,存在许多不需要用户登录就可以访问的资源,比如登录页面.退出页面.主页等.鉴于此,Acegi提供了匿名认证服务.这样能够使所有的Web资源得到保护,而不是某些资源不设权限控制,让任何人都可以访问,这样整个Acegi使能应用的Web安全策略模型将非常完美.与此同…
科研中无论是使用C/C++.Python.Matlab,如果能找到合适的库可谓是事半功倍: 有时候忙活半天才发现本身就有成熟的库可用,自己实现的在功能.性能.安全性上都远远不及,虽然锻炼了能力,但存在拖慢项目节奏的风险. 所以经常浏览下Python Software Foundation的 https://pypi.org https://www.python.org 或者是其他的开发者论坛,看看都有哪些有意思的库自己可以用的. 1. xlwt https://pypi.org/project/…
上一篇是基于BasicProcessingFilter的基本认证,这篇我们改用AuthenticationProcessingFilter基于表单的认证方式. 1.authenticationProcessingFilter 处理认证请求(通常是一个登录页面的表单请求).当身份验证成功时,AuthenticationProcessingFilter会在会话中放置一个Authentication对象,并且重定向到登录成功页面 l         authenticationFailureUrl定义…