spring security 3.0

spring security 3.0 ---- 个人基础理解(1)

由于还在实习,所以项目中分给我的任务也很简单。但是又由于毕业设计我的论文题目是我做的项目,老师说必须有亮点。

我就在论文里面加了项目中有关单点登录和权限验证。但是,既然写了。自己总有明白其中的道理吧。

于是,这几天在看有关spring security的相关文章,看了三天外加同事写的代码,总算是有点头绪了。下面做一个小小的总结。

希望以后再看起来能发现自己的问题所在。

---------------------------------------------华丽的分割线-----------------------------------------------------

我读程序喜欢按着一条线来读。spring security也不例外。

因为我们的单点登录和权限验证用到了他,我就按着登录的流程来。

在登录之前,先在web.xml中配置spring security的相关配置。

1.读取spring配置文件,至于下面的监听,网上有个文章说,要么用监听,要么用servlet来标示这个ContextLoaderListener。然后才能读取吧。(理解很模糊,先自己总结,以后再发现自己错误!)

<!--读取spring配置文件-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>

<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>

2.有关spring security的过滤器。默认的spring security的框架中有自己的过滤器链。只要配置了下面的代码,就是所有的请求都会经过这个过滤器链。当然可以在其中配置自己的过滤器。方法是在spring的applicationContext.xml文件中加入bean,然后标示<sec:custom-filter />其中有属性after、before、position。用于标示你自己的过滤器加载spring security中的那个过滤器之前或之后。

<!-- SpringSecurity config -->
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>FORWARD</dispatcher>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>

3.在applicationContext中有这么一段配置

登录页面,不需要访问权限
<sec:intercept-url pattern="/login.jsp" filters="none" access="IS_AUTHENTICATED_ANONYMOUSLY"/>

管理员页面需要管理员权限

<sec:intercept-url pattern="/admin.jsp" access="ROLE_ADMIN"/>

其他所有页面需要用户权限
<sec:intercept-url pattern="/**" access="ROLE_USER"/>

而权限的设置,是通过一个远程服务器数据库,在数据库中添加如下三张表:users,role,users_role

下面的配置是配置spring security的默认登录页面。就是验证之后若无权限,默认进入的登录页面。在spring security的默认登录请求中需要添加如下字符串:j_spring_security_check;这是spring security默认的登录请求包含的字符串(这块我有点不理解,或者是理解的有点偏差吧),听说这个可以自己手动修改,因为毕竟都不熟悉。所以我同事也没有修改,我也就按着他这个来看的。
<sec:form-login login-page="/page/login/login.faces" default-target-url="/"
authentication-failure-url="/page/login/login.faces?error=true"/>

4.在spring security中是通过这样的方法来获取当前用户的session:SecurityContextHolder.getContext().getAuthentication()(准确说是获取用户信息)。我同事说是获取session。

========================分割线====================================

目前理解这么点。以后慢慢深入了解吧……


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值