曼巴精神#24(24小时都要努力)

曼巴精神#24 if you really want it , go go go!!!

SpringSecurity3实战

*1.为什么要学习SpringSecurity?
    *1.session窃取(固化攻击):解决方法登录前一个cookie信息 (sessionId),登录后改一个cookie(sessionId)
    *2.网站资源没有经过权限保护
*2.什么是SpringSecurity?
    Spring 基于Spring框架编写的(IOC核心功能,可以与spring进行无缝集成)
    Security 提高系统的安全性
    是一个开源的框架。
*3.关于SpringSecurity的版本
    社区比较活跃,版本升级比较的频繁。
    教学版本:spring security 3.1
*4编写Hello world体验SpringSecurity3.1作用
    *1.搭建开发环境
        jar包、配置文件、在web.xml中配置springsecurity
        web.xml中的配置
        <!-- 配置springsecurity session监听,主要实现session固化攻击防御和session并发控制 -->
        <listener>
            <listener-class>org.springframework.security.web.session.HttpSessionEventPublisher</listener-class>
        </listener>

        <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>
        </filter-mapping>
    *2.测试 crm/index.jsp
        springsecurity内置一个登录页面
*5.细研SpringSecurity3.1
    *1.如何告诉springsecurity,正确的用户名和密码?
        *1.1.硬编码方式:
            <!-- 配置认证管理器 -->
            <security:authentication-manager alias="authenticationManager">
                <security:authentication-provider>
                    <!-- 通过硬编码的方式提供 -->
                    <security:user-service>
                        <security:user name="william" password="william" authorities="ROLE_MASTER22"/>
                    </security:user-service>
                </security:authentication-provider>
            </security:authentication-manager>

        缺点:
        在实际开发里面,不能使用.都要使用从数据库里面查询的方式
        authorities="ROLE_MASTER22"权限名,如果与访问资源所需要的权限名不同的话,页面将抛出403异常(权限被拒绝)

    *2.如何告诉springsecurity使用我们自定义的登录表单
        *1.springSecurity配置文件中:
        <!-- 配置登录页面 -->
        <!-- login-page:默认指定的登录页面. authentication-failure-url:出错后跳转页面. default-target-url:成功登陆后跳转页面.
            login-processing-url:发送的登录请求 -->
        <security:form-login default-target-url="/sys/loginAction.action"
            login-page="/login.jsp" authentication-failure-url="/prelogin.jsp"
            login-processing-url="/loginForSpringSecurity" />
         
        *2.把login.jsp <form action="loginForSpringSecurity">
        *3.把login.jsp <form action="loginForSpringSecurity">里面的用户名和密码的name属性值进行更改
            <input class="user_name" type="text" name="j_username" id="username" />
            <input class="user_pwd" type="password"  name='j_password' id="password" />
    
    *3.把springSecurity配置成企业级应用
        *1.执行原理
            *1.1.文字版
                1)容器启动(CustomFilterInvocationSecurityMetadataSourceImpl:loadResourceDefine加载系统资源与权限列表)
                2)用户发出请求
                3)过滤器拦截(CustomFilterSecurityInterceptorImpl:doFilter)
                4)取得请求资源所需权限(CustomFilterInvocationSecurityMetadataSourceImpl:getAttributes)
                5)匹配用户拥有权限和请求权限(CustomAccessDecisionManagerImpl:decide),如果用户没有相应的权限,
                执行第6步,否则执行第7步。
                6)登录
                7)验证并授权(CustomUserDetailsServiceImpl:loadUserByUsername)
                8)重复4,5
            *1.2.图形版
        *2.讲配置
            *1.从数据库里面,加载资源与角色的列表
                实现FilterInvocationSecurityMetadataSource接口
            *2.用户的请求,如何给我们自定义的拦截器
                Filter
            *3.自定义规则器(匹配访问该资源的权限与目前登录者所具有的权限 )
                *3.1.看看当前登录者身份信息(角色是什么)
                    自定义授权认证器:必须实现UserDetailsService接口
                    返回数据的dto必须实现 UserDetails接口    

                *3.2.根据请求资源的uri,从map里面加载访问该资源所应有的角色是什么
                *3.3.资源所应有的角色与当前登录者的角色进行比较
                    *1.情况一:如果该用户没有进行登录,跳转到登录页面去
                    *2.情况二:如果该用户已经进行登录,但没有访问该资源的权限,则抛出403异常
                    自定义的比较器,需要继续AccessDecisionManager类

            *4.配置SpringSecurity的md5加密类
                继承:BasePasswordEncoder
                让SpringSecurity自动调用


    *4.如何在Struts2里面拿到由SpringSecurity3.1.x验证后的用户信息?
        SysUserDTO result = (SysUserDTO)SecurityContextHolder.getContext().getAuthentication().getPrincipal();
            












阅读更多
版权声明:如需转载请注明出处,侵权必究!!! https://blog.csdn.net/mambaMentality/article/details/79952766
文章标签: SpringSecurity
上一篇SpringSececurity执行原理图
下一篇URL和URI的区别
想对作者说点什么? 我来说一句

springSecurity3

2013年10月15日 26KB 下载

springSecurity3例子

2010年01月07日 6.16MB 下载

springSecurity3中文文档

2013年08月19日 5.48MB 下载

springSecurity3实例

2011年08月17日 134KB 下载

springsecurity3的进阶实例

2011年06月05日 1.24MB 下载

springSecurity3入门级文档.doc

2011年07月12日 42KB 下载

springsecurity3 权限管理

2012年08月02日 12.93MB 下载

springsecurity3离线手册

2009年10月09日 220KB 下载

没有更多推荐了,返回首页

关闭
关闭