spring security入门实例

来源:互联网 发布:淘宝店铺发布产品 编辑:程序博客网 时间:2024/06/06 16:37

头一次使用security,简单的基于xml配置,做点笔记。

security配置

<http auto-config="true" use-expressions="true" >  
<intercept-url pattern="/auth/toLogin" access="permitAll" />

        <intercept-url pattern="/**" access="hasRole('ROLE_ADMIN')"/>
        
        <form-login login-processing-url="/j_spring_security_check"
        login-page="/auth/toLogin"  
        default-target-url="/management/toManagement"
            username-parameter="j_username"
            password-parameter="j_password"
            authentication-failure-url="/auth/toLogin"/>  
        <logout logout-success-url="/auth/toLogin"   
        logout-url="/auth/toLogout"
            invalidate-session="true" />
        <csrf />
        <session-management invalid-session-url="/auth/toLogin">  
            <concurrency-control max-sessions="1" />  
        </session-management>  
    </http>               
    <authentication-manager>
    <authentication-provider>
    <user-service>
    <user name="jimmy" password="jimmy" authorities="ROLE_ADMIN"/>
    </user-service>
    </authentication-provider>
    </authentication-manager>

上面的路径,都是controller里面的requestMapping的路径,最开始对这些路径比较困惑,网上一些例子都是路径和jsp路径一起混用的,所以为了方便自己,我就都用了配置的路径。


然后还有一点,在有上传文件的页面上,csrf安全配置的问题。

默认使用文件上传使用apache commons upload会出现csrf报错的问题,会报找不到csrf token,debug代码的时候,可以看看csrfFilter,request里面是没有携带页面里面配的csrf信息的。

有3个办法能解决吧

1.可以在security里面禁止使用

2.把csrf的token信息放到访问的url里面

3.为了安全的目的,还是想办法处理一下

既然做安全的,1,2都不太好,所以来说说3的配置

改用servlet3 自带的文件上传功能,在spring-servlet里面配上下面的bean

<bean id="multipartResolver"  
   class="org.springframework.web.multipart.support.StandardServletMultipartResolver">  
</bean> 

在web.xml里面配置如下的filter,要求放在spring-security的filter上面

<filter>
   <filter-name>MultipartFilter</filter-name>
   <filter-class>org.springframework.web.multipart.support.MultipartFilter</filter-class>
</filter>

<filter-mapping>
   <filter-name>MultipartFilter</filter-name>
   <servlet-name>/*</servlet-name>
</filter-mapping>

对应上传文件的大小限制可以在web.xml的spring-servlet的部分配置

<servlet>
<servlet-name>servlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring-servlet.xml</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
<multipart-config>  
           <!--location>/tmp</location-->  
           <max-file-size>10485760</max-file-size>  
       </multipart-config> 
</servlet>

csrf 部分参考 http://stackoverflow.com/questions/25185578/spring-security-3-2-csrf-and-multipart-requests

0 0
原创粉丝点击