SpringSecurityConfig.java 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. package com.yihu.wlyy.config;
  2. import com.yihu.wlyy.filter.AccessDecisionManagerImpl;
  3. import com.yihu.wlyy.filter.AccessDeniedHandlerImpl;
  4. import org.springframework.context.annotation.Bean;
  5. import org.springframework.security.access.AccessDecisionManager;
  6. import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
  7. import org.springframework.security.config.annotation.web.builders.HttpSecurity;
  8. import org.springframework.security.config.annotation.web.builders.WebSecurity;
  9. import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
  10. import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
  11. import org.springframework.security.web.access.expression.DefaultWebSecurityExpressionHandler;
  12. /**
  13. * @author lincl
  14. * @version 1.0
  15. * @created 2016/7/21
  16. */
  17. @EnableWebSecurity
  18. public class SpringSecurityConfig extends WebSecurityConfigurerAdapter {
  19. @Override
  20. public void configure(WebSecurity web) throws Exception {
  21. // 设置不拦截规则
  22. web.ignoring().antMatchers(
  23. "/static/**",
  24. "/error/**",
  25. "/out",
  26. "/**.jsp",
  27. "/common/**",
  28. "/login/**",
  29. "/yueren/**",
  30. "/svr-iot/**",
  31. "/customer/**",
  32. "/third/**",
  33. "/admin/hos/doctor/importFromExcel",
  34. "/admin/hos/doctor/importData",
  35. "/admin/team/importData",
  36. "/admin/hos/importData",
  37. "/admin/hos/doctor/toExcel",
  38. "/admin/device/toExcel",
  39. "/admin/device/importData",
  40. "/admin/patientDevice/toExcel",
  41. "/admin/healthIndex/**",
  42. "/admin/healthIndex/getExcelByFilter",
  43. "/admin/static/prescription/toExcel",
  44. "/admin/static/wechat/listToExcel",
  45. "/admin/static/wechat/hosipitaTotalToExcel",
  46. "/admin/static/healthedu/pushlistToExcel",
  47. "/admin/static/wechat/townTotalToExcel",
  48. "/admin/static/pay/signpayToExcel",
  49. "/admin/static/pay/prescriptionToExcel",
  50. "/admin/basedata/importData",
  51. "/admin/wlyyUserRole/importData",
  52. "/admin/questionnaire/importData",
  53. "/WEB—INF/views/**",
  54. "/admin/specialDisease/**",
  55. "/admin/surveyTemplateResult/**",
  56. "/admin/surveyAdvice/**",
  57. "/admin/surveyTemplateAdvice/**",
  58. "/admin/paylog/**",
  59. "/admin/static/consult/**",
  60. "/admin/specialist/hospitalServiceItem/importData"
  61. );
  62. }
  63. @Override
  64. protected void configure(HttpSecurity http) throws Exception {
  65. // 设置拦截规则
  66. http
  67. .authorizeRequests()
  68. .accessDecisionManager(accessDecisionManager())
  69. .expressionHandler(webSecurityExpressionHandler())
  70. .antMatchers("/yueren/**").permitAll()
  71. .antMatchers("/svr-iot/device/**").permitAll()//物联网平台没有做登录(这里添加免登录验证)
  72. // .antMatchers("/admin/main").permitAll()
  73. // .antMatchers("/login/**").permitAll()
  74. // .antMatchers("/admin/**").authenticated()
  75. .antMatchers("/admin/**").hasRole("USER")
  76. .and()
  77. .exceptionHandling().accessDeniedHandler(accessDeniedHandler())
  78. .and()
  79. // .headers().frameOptions().disable();//取消jfame的安全验证
  80. // .and()
  81. .headers().disable();
  82. // 自定义登录页面
  83. // http.csrf().disable().formLogin().loginPage("/login").permitAll();
  84. // 自定义注销
  85. // http.logout().logoutUrl("/logout").logoutSuccessUrl("/login")
  86. // .invalidateHttpSession(true);
  87. // session管理
  88. // http.sessionManagement().sessionFixation().changeSessionId()
  89. // .maximumSessions(1).expiredUrl("/");
  90. // RemeberMe 和UserDetailsService合作 用来保存用户信息, 一段时间内可以不用在输入用户名和密码登录,暂不使用该功能
  91. // http.rememberMe().key("webmvc#FD637E6D9C0F1A5A67082AF56CE32485");
  92. }
  93. @Override
  94. protected void configure(AuthenticationManagerBuilder auth) throws Exception {
  95. }
  96. /*
  97. * 最终访问控制器
  98. */
  99. @Bean(name = "accessDecisionManager")
  100. public AccessDecisionManager accessDecisionManager() {
  101. return new AccessDecisionManagerImpl();
  102. }
  103. /*
  104. * 错误信息拦截器
  105. */
  106. @Bean(name = "accessDeniedHandler")
  107. public AccessDeniedHandlerImpl accessDeniedHandler() {
  108. AccessDeniedHandlerImpl accessDeniedHandler = new AccessDeniedHandlerImpl();
  109. // accessDeniedHandler.setErrorPage("/error/403.jsp");
  110. return accessDeniedHandler;
  111. }
  112. /*
  113. * 表达式控制器
  114. */
  115. @Bean(name = "expressionHandler")
  116. public DefaultWebSecurityExpressionHandler webSecurityExpressionHandler() {
  117. DefaultWebSecurityExpressionHandler webSecurityExpressionHandler = new DefaultWebSecurityExpressionHandler();
  118. return webSecurityExpressionHandler;
  119. }
  120. }