springside使用——Spring Security 2和struts2的一些资料整理

25 篇文章 1 订阅
6 篇文章 1 订阅

现在的东西包装得越来越厉害,不知道是好事还是坏事。

 

需要建个web client,用到了springside,里面集成了spring security,没办法,得研究一下,用的spring security版本是2.0.5。

 

一、登录及其相关信息配置

高级特性咱先不要,先来实现个最简单的登录验证授权功能,底层的框架spring security已经搭好了,关键的是开发者需要提供以下几个方面的信息给它:

1、authentication相关的信息——都有哪些user,密码是多少,属于什么角色

2、authorization相关信息——哪些页面需要保护,被保护的每个页面能被哪些用户访问

3、相关的信息放在哪,如何来配置

 

当然这里的验证设计是基于RBAC——Role based access control,简单地说就是user--role--authority(=资源+操作)的三者对应关系。

 

个人的理解,spring security通过预先配置的一些filter来完成一个应用所需的基本安全功能,然后需要开发人员对每个filter进行参数配置来达到特定的效果。我使用的是namespace configuration的方式来配置我的web security。比如缺省配置的就有以下的一些filter,每个filter又都允许你进行一些参数的设置:

 

 

既然是web应用,spring security要起作用,必须先在web.xml进行注册:

 

注册好之后,我们接下来需要关心具体的每个filter如何工作的,我们就拿其中的filterSecurityInterceptor来看看怎么把我们自己的信息嵌入进去。

 

打开FilterSecurityInterceptor.java或者xsd文件,我们就能知道如何去提供上面说的几类信息:

1、直接在xml文件里配置好这些信息

2、通过database或者ldap server来提供这些信息

详细的配置说明可以参考下面这两篇文章,我也是跟着学的。

 

 

 非常优秀的权限管理框架 -- Spring Security

http://blog.csdn.net/wenlin56/archive/2010/12/16/6081022.aspx

 

 

SpringSide 3 中的安全框架 Spring Security 2.0

http://blog.csdn.net/shangpusp/archive/2010/04/16/5494563.aspx

 

 

二、如何使用用户相关信息

前面登录的配置中,有个地方可以指定你自己的用户登录页面:

 

就是上面代码中login-page="/login.action"这一项,因为这里用到了Struts的convention plugin,晕,当然也可以直接指定某个页面比如login.jsp。

 

好了,哪些页面受保护,有哪些用户,每个用户能够访问什么页面都配置好了,当用户访问某个页面时,spring security会自动判断该用户是否已经登录,没有登录的话就跳转到登录页面,等用户输入相关信息后,它会帮你判断是否登录成功。等登录成功后,它还会自动帮你检查权限。够不错的吧!下面是一个完整的spring xml配置文件:

 

接下来就有一个问题,比如我需要在别的页面是用登录用户的相关信息,那我该怎么拿到登录用户的具体信息呢,比如用户名之类的?

 

这就需要看FilterSecurityInterceptor在验证成功后都把这些信息放哪了。

在AbstractSecurityInterceptor.java里面通过以下代码发现是把这些信息放在了SecurityContextHolder里面,而放入的信息是Authentication的实现类,其中最重要的方法就是getPrincipal(),它默认返回Spring内置的User对象。

 

当你有了自己的UserDetailService实现时,你可以在loadUserByUsername方法中定制这个信息,你甚至可以扩展User对象加入自己的字段。

 

好了,接下来就是在后续的页面中将这些信息取出来了。

 

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值