spring security实践

参考资料 documentation doc

web.xml启用spring的filter

<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>

servlet默认是jsp页面,如果改用html,需要添加filter mapping

    <servlet-mapping> 
		<servlet-name>jsp</servlet-name> 
		<url-pattern>*.html</url-pattern> 
	</servlet-mapping>

配置拦截路径,如下用 /** 会拦截所有资源,包括js等静态资源,即使在spring-config.xml中取消了拦截。我这里改用了 /* 配置。

<http>
  <intercept-url pattern="/**" access="ROLE_USER" />
  <form-login />
  <logout />
</http>
如果这时候启动,会提示缺少ROLE_USER的声明,需要增加用户配置。

<authentication-manager>
  <authentication-provider>
    <user-service>
      <user name="jimi" password="jimispassword" authorities="ROLE_USER, ROLE_ADMIN" />
      <user name="bob" password="bobspassword" authorities="ROLE_USER" />
    </user-service>
  </authentication-provider>
</authentication-manager>

这时就可以启动浏览器了,发现浏览器会自动跳到spring生成的jsp

关于这个登录页,doc中说明了是spring自动生成的,当然如果指定了登陆页就不会跳转到spring_security_login这个页面了


指定自定义的login,由于饮用了资源文件,先取消资源文件的拦截

<span style="white-space:pre">	</span><security:http pattern="**.jpg" security="none" />
	<security:http pattern="**.png" security="none" />
	<security:http pattern="**.gif" security="none" />
	<security:http pattern="**.css" security="none" />
	<security:http pattern="**.js" security="none" /> 
<security:form-login
        	login-page="/login.html"
        />
login.html 就是我自己的登陆页,重启server,效果如下。


实际情况中,肯定需要自定义登录控制

customized user service

  <authentication-manager>
    <authentication-provider user-service-ref='myUserDetailsService'/>
  </authentication-manager>

DB控制

<authentication-manager>
  <authentication-provider>
    <jdbc-user-service data-source-ref="securityDataSource"/>
  </authentication-provider>
</authentication-manager>
声明具体的实现类,db方式就是spring中的datasource

<authentication-manager>
  <authentication-provider user-service-ref='myUserDetailsService'/>
</authentication-manager>

<beans:bean id="myUserDetailsService"
    class="org.springframework.security.core.userdetails.jdbc.JdbcDaoImpl">
  <beans:property name="dataSource" ref="dataSource"/>
</beans:bean>

MD5加密

<password-encoder ref="bcryptEncoder"/>
记住用户

<remember-me key="myAppKey"/>
https证书另外添加配置

<http>
  <intercept-url pattern="/secure/**" access="ROLE_USER" requires-channel="https"/>
  <intercept-url pattern="/**" access="ROLE_USER" requires-channel="any"/>
  ...
</http>
  <port-mappings>
    <port-mapping http="9080" https="9443"/>
  </port-mappings>

session失效跳转

<http>
  ...
  <session-management invalid-session-url="/invalidSession.htm" />
</http>
退出时清理session

<http>
  <logout delete-cookies="JSESSIONID" />
</http>

暂且到这里





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值