一.  在NuGet下载Elmah.MVC dll文件!  或者点击下载dll文件,并且引用客户端. 二.配置WebConfig <sectionGroup name="elmah"> <section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah"/> <section n…
一个能为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资源的方式就无法满足…
在某些应用场合中,我们可能需要用到切换用户的功能,从而以另一用户的身份进行相关操作.这一点类似于在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…
首先讲讲EhCache.在默认情况下,即在用户未提供自身配置文件ehcache.xml或ehcache-failsafe.xml时,EhCache会依据其自身Jar存档包含的ehcache-failsafe.xml文件所定制的策略来管理缓存.如果用户在classpath下提供了ehcache.xml或ehcache-failsafe.xml文件,那么EhCache将会应用这个文件.如果两个文件同时提供,那么EhCache会使用ehcache.xml文件的配置.EhCache内容如下: <ehca…
在实际企业应用中,用户密码一般都会进行加密处理,这样才能使企业应用更加安全.既然密码的加密如此之重要,那么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…