别人的都是最佳实践,因为我目前的设置没有按照参考文档推荐,还是采用DelegatingFilterProxy,所以我只能说简明实践。先贴我的applicationContext-security.xml

<?xml version="1.0" encoding="UTF-8"?>  

<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/<a href="http://lib.csdn.net/base/javaee" class='replace_word' title="Java EE知识库" target='_blank' style='color:#df3434; font-weight:bold;'>spring</a>-beans-2.0.xsd
http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-2.0.4.xsd">
<global-method-security secured-annotations="enabled">
</global-method-security>
<http auto-config="true"> <!-- intercept-url pattern="/**" filters="none" /-->
<intercept-url pattern="/login.jsp*" filters="none"/>
<intercept-url pattern="/common/pages/**" access="IS_AUTHENTICATED_REMEMBERED" />
<intercept-url pattern="/common/**" filters="none" />
<intercept-url pattern="/secure/extreme/**" access="ROLE_SUPERVISOR"/>
<intercept-url pattern="/secure/**" access="IS_AUTHENTICATED_REMEMBERED" />
<intercept-url pattern="/**" access="IS_AUTHENTICATED_REMEMBERED" /> <form-login login-page='/login.jsp' authentication-failure-url="/login.jsp?login_error=1" default-target-url='/index.jsp' /> </http>
<authentication-provider>
<jdbc-user-service data-source-ref="dataSource"
group-authorities-by-username-query="select U.username,G.group_name,GA.authority as 'authority' from users U join group_members GM on U.username=GM.username join groups G on GM.group_id=G.id join group_authorities GA on G.id=GA.group_id where U.username=?"
/> <password-encoder hash="plaintext"/>
</authentication-provider>
</beans:beans>

对上面的配置说明一下,form-login的authentication-failure-url和default-target-url属性设置基本就可以免去使用ExceptionTranslationFilter的麻烦,authentication-provider使用上面这个配置方式是最方便可用的,至于因为我的数据库建立在sql Server上,所以添加了group-authorities-by-username-query属性,password-encoder我个人建议采用参考文档上推荐的以username做salt的sha编码,我这儿使用plaintext,是因为我这个项目目前还在开发测试阶段,用户管理这个模块还没有完全建立,所以为了测试的方便,用了plaintext的编码。那个dataSource,我是按照API文档推荐,建立了一个容器JNDI,然后在spring里用JndiObjectFactoryBean代理了一下。

用户管理的设施代码采用以JdbcUserDetailsManager为主,jdbcTemplate为辅的方式,其中前者不要建立在springContext下面,否则会导致多userDetailService冲突。

下面说一下spring Security国际化(i18N)的配置处理,先贴代码:

<bean id="messageSource"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="/WEB-INF/ssm"/>
</bean>
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver"/>

注意了:我上面的bean定义不在applicationContext-security.xml里面,而是在一个以beans作为默认命名空间的applicationContext-beans.xml里面,我说一下上面这个配置做的时候出现的问题,其中的basename的value,我刚开始采用开发指南上说的"org/springframework/security/messages",可是始终找不到jar包里面的messages文件,后来,我看了一个老外的同问题贴,他采用上面这种方式,把messages文件放在了/WEB-INF/下面,反正这种配置方式下,messages文件终于可以找到,i18N可以正常运行了,至于那个messages文件,还是从jar包里面解压出来的东西。

Spring Security简明实践及相关国际化处理的更多相关文章

  1. Spring Security 学习+实践

    Spring Security是Spring为解决应用安全所提供的一个全面的安全性解决方案.基于Spring AOP和Servlet过滤器,启动时在Spring上下文中注入了一组安全应用的Bean,并 ...

  2. Spring Security教程(5)---- 国际化配置及UserCache

    这一章是为了给后面的讲解打基础的,主要介绍下国际化的配置及UserCache的配置及使用 国际化配置 <!-- 定义上下文返回的消息的国际化 --> <bean id="m ...

  3. Spring Security 入门(1-9)国际化的使用

  4. Spring Security Auth/Acl 实践指南

    目录 导语 Web Api Authentication/Authorization 示例接口 添加 Maven 依赖 实现接口 访问接口 认证/鉴权 配置认证/鉴权 添加 Maven 依赖 创建数据 ...

  5. Spring Security 入门详解(转)

    1.Spring Security介绍 Spring Security是基于spring的应用程序提供声明式安全保护的安全性框架,它提供了完整的安全性解决方案,能够在web请求级别和方法调用级别 处理 ...

  6. Spring Security 与 OAuth2 介绍

    个人 OAuth2 全部文章 Spring Security 与 OAuth2(介绍):https://www.jianshu.com/p/68f22f9a00ee Spring Security 与 ...

  7. Spring Security 入门详解

    序:本文主要参考 spring实战 对里面的知识做一个梳理 1.Spring Security介绍 Spring Security是基于spring的应用程序提供声明式安全保护的安全性框架,它提供了完 ...

  8. Spring Security 与 OAuth2(介绍)

    https://www.jianshu.com/p/68f22f9a00ee Spring Security 与 OAuth2(介绍) 林塬 2018.01.23 11:14* 字数 3097 阅读 ...

  9. oauth2 Spring Security

    oauth2四种授权方式小结 http://www.ruanyifeng.com/blog/2019/04/oauth-grant-types.html 密码模式(resource owner pas ...

随机推荐

  1. UNIX环境高级编程——线程和fork

    当线程调用fork时,就为子进程创建了整个进程地址空间的副本.子进程通过继承整个地址空间的副本,也从父进程那里继承了所有互斥量.读写锁和条件变量的状态.如果父进程包含多个线程,子进程在fork返回以后 ...

  2. Android的stateListDrawable,layerDawable,clipdrawable,AnimationDarwable介绍-android学习之旅(五十五)

    StatelistDrawable资源 代码示例 <?xml version="1.0" encoding="utf-8"?> <select ...

  3. 【翻译】Ext JS最新技巧——2016-3-4

    原文:Top Support Tips Kevin Cassidy:Grid水印 Ext JS的Grid是一个便于在布局中显示信息的伟大工具.有些用户可能会希望将这些信息打印为会议资料或宣传材料,而且 ...

  4. 15-5-23 下午02时22分58秒 CST> <Info> <Management> <BEA-141281> <unable to get file lock, will retry ...>

     A-141281> <unable to get file lock, will retry ...>   http://gdutlzh.blog.163.com/blog/s ...

  5. 菜鸟玩云计算之十二:KVM虚拟机更改大小

    菜鸟玩云计算之十二:KVM虚拟机更改大小 参考: http://www.missionfamilybank.org/expanding-resizing-your-qcow2-virtual-mach ...

  6. OpenCV提取显示一张图片(或者视频)的R,G,B颜色分量

    使用OpenCV可以提分别提取显示一张图片(或者视频)的R,G,B颜色分量.效果如下. 原图: R: G: B: 示例代码如下,貌似很久以前网上找的的,逻辑很清晰,就是把R,G,B三个分量分开,然后显 ...

  7. (NO.00001)iOS游戏SpeedBoy Lite成形记(十一)

    之前的10篇内容主要实现了选手从起点移动至终点的动作,比较随机的模拟了选手的速度变化,另外完成了选手到达终点时该做的事情. 接下来的几篇中我们进一步完善SpeedBoy Lite项目,使它真正成为一个 ...

  8. python判断类型:想知道一个对象(实例或者变量)是什么类型,什么结构的

    用type和isinstance 例子: ta={} ta['1']="a" ta={'2':"b"} ta['3']="c" #使用两个函 ...

  9. 知名IT公司的年度大会合集

    很多知名的IT公司都有年度大会,比如说谷歌,微软,Adobe,甲骨文,苹果等等.在这些公司的年度大会上,都会展示一些公司比较前沿的产品.看看这些大会的视频(也可以参会,但是门票可是非常贵的),对我们了 ...

  10. Android 自定义view --圆形百分比(进度条)

    转载请注明出处:http://blog.csdn.net/wingichoy/article/details/50334595 注:本文由于是在学习过程中写的,存在大量问题(overdraw onDr ...