spring-security3 配置和使用

web.xml配置

<context-param>

<param-name>contextConfigLocation</param-name>
<param-value>classpath*:applicationContext-*.xml</param-value>
</context-param>
<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>


application-security.xml配置

  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <beans:beansxmlns="http://www.springframework.org/schema/security"
  3. xmlns:beans="http://www.springframework.org/schema/beans"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xsi:schemaLocation="http://www.springframework.org/schema/beans
  6. http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  7. http://www.springframework.org/schema/security
  8. http://www.springframework.org/schema/security/spring-security-3.0.xsd">
  9. <!--auto-config=true则使用from-login.如果不使用该属性则默认为http-basic(没有session).
  10. access-denied-page:出错后跳转到的错误页面;
  11. -->
  12. <httpauto-config="true"access-denied-page="/common/403.jsp">
  13. <!--intercept-url:拦截器,可以设定哪些路径需要哪些权限来访问.filters=none不使用过滤,也可以理解为忽略
  14. 只有ROLE_USER角色的用户才能访问 -->
  15. <intercept-urlpattern="/index.jsp"access="ROLE_USER"/>
  16. <intercept-urlpattern="/login.jsp"filters="none"/>
  17. <intercept-urlpattern="/common/**"filters="none"/>
  18. <intercept-urlpattern="/script/**"filters="none"/>
  19. <intercept-urlpattern="/admin.jsp"access="ROLE_ADMIN"/>
  20. <intercept-urlpattern="/user.jsp"access="ROLE_USER"/>
  21. <!--session-management是针对session的管理.这里可以不配置.如有需求可以配置.-->
  22. <!--id登陆唯一.后登陆的账号会挤掉第一次登陆的账号error-if-maximum-exceeded="true"禁止2次登陆;
  23. session-fixation-protection="none"防止伪造sessionid攻击.用户登录成功后会销毁用户当前的session.
  24. 创建新的session,并把用户信息复制到新session中.
  25. -->
  26. <session-managementsession-fixation-protection="none">
  27. <concurrency-control/>
  28. </session-management>
  29. <!--login-page:默认指定的登录页面.authentication-failure-url:出错后跳转页面.default-target-url:成功登陆后跳转页面-->
  30. <form-loginlogin-page="/login.jsp"
  31. authentication-failure-url="/common/403.jsp"
  32. default-target-url="/admin.jsp"/>
  33. <!--logout-success-url:成功注销后跳转到的页面;-->
  34. <logoutlogout-success-url="/login.jsp"/>
  35. <http-basic/>
  36. </http>
  37. <!--权限管理操作-->
  38. <authentication-manager>
  39. <authentication-provider>
  40. <!-- 把密码和盐值指定的内容合并在一起,如用户名是tom,密码是123456的用户在数据库中存放的密码应为“123456{tom}”的md5值-->
  41. <password-encoderhash="md5">
  42. <salt-sourceuser-property="username"/>
  43. </password-encoder>
  44. -->
  45. <!--注入dataSource验证数据库中的用户名.密码.账号状态.和权限相关;-->
  46. <jdbc-user-servicedata-source-ref="dataSource"
  47. users-by-username-query="selectusername,password,enabledfromuserwhereusername=?andenabled=1"
  48. authorities-by-username-query="selectu.username,r.namefromuserujoinuser_roleuronu.uid=ur.uidjoinroleronr.rid=ur.ridwhereu.username=?"/>
  49. <!--
  50. 使用固定的用户名和密码及权限来做验证.
  51. <user-service>
  52. <username="admin"password="admin"authorities="ROLE_USER,ROLE_ADMIN"/>
  53. <username="user"password="user"authorities="ROLE_USER"/>
  54. </user-service>
  55. -->
  56. </authentication-provider>
  57. </authentication-manager>
  58. 防止一个用户重复登录好几次-第二次登录会让第一次登录失效。 通常我们更想防止第二次登录,这时候我们可以使用

        <session-management>
            <concurrency-control max-sessions="1" error-if-maximum-exceeded="true" />
        </session-management>     

  59. </beans:beans>


获取当前用户信息
Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();

if (principal instanceof UserDetails) {
  String username = ((UserDetails)principal).getUsername();
} else {
  String username = principal.toString();
}


登陆后操作
public class AuthenticationSuccessHandler extendsSavedRequestAwareAuthenticationSuccessHandler {

登陆是操作(如添加验证码)
public class validateCodeUsernamePasswordAuthenticationFilter extends UsernamePasswordAuthenticationFilter{


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值