您的位置:首页 > 编程语言 > Java开发

传智播客--spring-security基础

2010-02-06 18:43 155 查看
spring-security是经常使用到的一个插件.在控制权限的插件中和框架中,并没有几个非常好用,并且功能强大的.这个spring-
security插件算是比较好的了.但是我感觉在用起来还是不那么灵活和方便.不过,使用它也会给我们带来一定的方法.事情都是有利有弊的嘛.

1. 搭建
spring-security 的环境.

1). spring 项目: 导入 spring 的两个 jar 包, 加入 spring 的配置文件(注意加入 security
命名空间)

2). 加入 spring-security 的一个 jar 包

3). 在 web.xml 文件中加入相关配置

①. 搭建 spring 环境

②. 加入 spring-security 框架的过滤器

③. 在 spring 的配置文件中配置 spring-security 应用:

<!-- 配置 spring-security 的 http 安全服务 -->

<sec:http auto-config="true">

<!-- 哪些页面需要受到 spring-security 的保护, 以及访问这些页面的权限时什么
-->

<sec:intercept-url pattern="/index.jsp"
access="ROLE_ADMIN, ROLE_USER"/>

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

</sec:http>

<!-- 配置 spring-security 的权限信息 -->

<sec:authentication-provider>

<!-- 配置 spring-security 用户信息 -->

<sec:user-service>

<sec:user password="user" name="user"
authorities="ROLE_USER"/>

<sec:user password="admin" name="admin"
authorities="ROLE_ADMIN"/>

</sec:user-service>

</sec:authentication-provider>

2.
DelegatingFilterProxy:

1). 是一个 Filter

2). 将 HTTP 请求委托给 Spring 应用程序上下文中的一个 Bean, 默认情况下,

DelegatingFilterProxy 会把 HTTP 请求委托给和它的 <filter-name> 属性相同的
Bean 上

3. 把 security 作为
spring 配置文件的默认命名空间.

1). 互换 ①, ② 的属性值

<beans xmlns="http://www.springframework.org/schema/beans" ①

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:sec="http://www.springframework.org/schema/security" ②

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-2.0.2.xsd">

</beans>

变为

<beans xmlns="http://www.springframework.org/schema/security"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:sec="http://www.springframework.org/schema/beans"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-2.0.2.xsd">

</beans>

2). ②的属性名变为 xmlns:beans

<beans xmlns="http://www.springframework.org/schema/security"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:sec="http://www.springframework.org/schema/beans" ②

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-2.0.2.xsd">

</beans>

变为

<beans xmlns="http://www.springframework.org/schema/security"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:beans="http://www.springframework.org/schema/beans" ②

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-2.0.2.xsd">

</beans>

3). ③的标签名变为 beans:beans

<beans xmlns="http://www.springframework.org/schema/security" ③

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:beans="http://www.springframework.org/schema/beans"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-2.0.2.xsd">

</beans> ③

变为

<beans:beans
xmlns="http://www.springframework.org/schema/security" ③

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:beans="http://www.springframework.org/schema/beans"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-2.0.2.xsd">

</beans:beans> ③

4. 配置登出:

1). 通过 http 节点的 logout 子节点进行配置

2). 默认的 url 为: j_spring_security_logout, 可通过 logout-url 属性修改默认的 url

3). logout-success-url 属性配置成功登出重定向页面

4). invalidate-session 属性配置是否销毁 session

5. 配置登录:

1). 通过 http 节点的 form-login 子节点进行配置

2). login-page 属性配置指定的登录页面: 但是该表单页面不能随意的定义, 例如用户名, 密码. 而应使用
spring-security 的配置方式.

3). login-processing-url 属性配置处理登陆页面的 url

4). 若直接访问登录页面, 若登录成功, 则 spring-security 默认把页面重定向到 /index.jsp 页面.
若不存在该页面,或需要重定向到其他页面,

则需要配置 default-target-url 属性; 若访问受保护的页面, 则 spring-security
框架会把请求重定向到 login-page 属性指定的页面, 若登录成功

spring-security 会把请求再重新定向到刚才请求的受保护的那个页面

5). authentication-failure-url 配置登录失败的相应页面

6). 若 always-use-default-target="true" 则只要登录成功, spring-security
都会把请求重定向到 default-target-url 属性指定的页面

6.
spring-security 的自定义标签: 定制视图的显示

1). 导入 jar 包: spring-security-taglibs-2.0.5.RELEASE.jar

2). 在 jsp 页面使用 spring-secrity 提供的自定义标签: <security:authorize>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: