spring-security基础

来源:互联网 发布:sql入门经典 微盘 编辑:程序博客网 时间:2024/04/29 13:44
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>
原创粉丝点击