zoukankan      html  css  js  c++  java
  • spring Securicty入门(一)

    在一次项目中启动测试一个借口,结果提示要登录,如下图。原因是无意中引用了spring Securicty的依赖,别的啥都没干就弹出来这个,懵逼了半天最后注释掉。shiro你引个jar包别的不配置,也不会有效果吧。原来Spring Security是spring的内置安全框架,亲儿子,下面就一个简单的demo对spring Security的使用做一个简单的介绍。

    一、pom.xml引入依赖

         <dependency>
                <groupId>org.springframework.security</groupId>
                <artifactId>spring-security-web</artifactId>
                <version>4.1.0.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.security</groupId>
                <artifactId>spring-security-config</artifactId>
                <version>4.1.0.RELEASE</version>
            </dependency>

    二、配置文件spring-security.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans:beans xmlns="http://www.springframework.org/schema/security"
        xmlns:beans="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        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.xsd">
    
        <!-- 设置页面不登陆也可以访问 -->
        <http pattern="/login.html" security="none"></http>
        <http pattern="/login_error.html" security="none"></http>
    
        <!-- 页面的拦截规则    use-expressions:是否启动SPEL表达式 默认是true 设置为false下面写法较为简单-->
        <http use-expressions="false">
            <!-- 当前用户必须有ROLE_USER的角色 才可以访问根目录及所属子目录的资源 -->
            <intercept-url pattern="/**" access="ROLE_USER"/> <!--前缀必须带ROLE-->
            <!-- 开启表单登陆功能 -->
            <form-login   login-page="/login.html" default-target-url="/index.html" authentication-failure-url="/login_error.html"/>
            <csrf disabled="true"/>
        </http>
        
        <!-- 认证管理器 在这里把用户名和密码写死,暂时不实现数据库用户-->
        <authentication-manager>
            <authentication-provider>
                <user-service>
                    <user name="admin" password="123456" authorities="ROLE_USER"/>
                </user-service>
            </authentication-provider>    
        </authentication-manager>
            
    </beans:beans>

    配置说明:
    intercept-url 表示拦截页面
    /* 表示的是该目录下的资源,只包括本级目录不包括下级目录
    /** 表示的是该目录以及该目录下所有级别子目录的资源
    form-login 为开启表单登陆
    use-expressions 为是否使用使用 Spring 表达式语言( SpEL ),默认为true ,如果开启,则拦截的配置应该写成以下形式

    <intercept-urlpattern="/**"access="hasRole('ROLE_USER')"/>

    security="none" 设置此资源不被拦截.
    login-page:指定登录页面。
    authentication-failure-url:指定了身份验证失败时跳转到的页面。
    default-target-url:指定了成功进行身份验证和授权后默认呈现给用户的页面。
    csrf disabled="true" 关闭csrf ,如果不加会出现错误

    CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。

    三、web.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns="http://java.sun.com/xml/ns/javaee"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
        version="2.5">    
    
           <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring-security.xml</param-value>
         </context-param>
         <listener>
            <listener-class>
                org.springframework.web.context.ContextLoaderListener
            </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>
        
    </web-app>
  • 相关阅读:
    让DateTimePicker显示空时间值
    Microsoft Office ACCESS作为网站数据库的弊端
    存储过程中有临时表生成DataSet会失败
    C# Winform 开源控件
    SQL Server format phone number
    RDLC, canGrow=True, canShrink=False, content are shrinked to the left in Safari.
    C#.net winform skin 皮肤大全devexpress,IrisSkin,DotNetSkin,SkinCrafter
    Inside WCF Runtime
    IOS开发中的几种设计模式介绍
    android ndk gdb 调试
  • 原文地址:https://www.cnblogs.com/zeussbook/p/10944235.html
Copyright © 2011-2022 走看看