WebSecurityConfig.java 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. package com.xintong.system.securityTools;
  2. import org.springframework.beans.factory.annotation.Autowired;
  3. import org.springframework.context.annotation.Bean;
  4. import org.springframework.context.annotation.Configuration;
  5. import org.springframework.http.HttpMethod;
  6. import org.springframework.security.authentication.encoding.Md5PasswordEncoder;
  7. import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
  8. import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
  9. import org.springframework.security.config.annotation.web.builders.HttpSecurity;
  10. import org.springframework.security.config.annotation.web.builders.WebSecurity;
  11. import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
  12. import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
  13. import org.springframework.security.config.http.SessionCreationPolicy;
  14. import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
  15. import com.xintong.visualinspection.service.UserService;
  16. /**
  17. * 文件名:WebSecurityConfig
  18. * 版本信息:日期:2017/3/31 Copyright 江苏省交通规划设计院 Corporation 2017 版权所有.
  19. */
  20. @Configuration
  21. @EnableWebSecurity
  22. @EnableGlobalMethodSecurity(securedEnabled = true,prePostEnabled=true)
  23. public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
  24. @Autowired
  25. private UserService userService;
  26. @Bean
  27. public JwtAuthenticationTokenFilter authenticationTokenFilterBean() throws Exception {
  28. return new JwtAuthenticationTokenFilter();
  29. }
  30. @Override
  31. protected void configure(AuthenticationManagerBuilder auth) throws Exception {
  32. auth.userDetailsService(userService).passwordEncoder(passwordEncoder());//user Details Service验证
  33. }
  34. @Override
  35. public void configure(WebSecurity web) throws Exception {
  36. super.configure(web);
  37. web.ignoring().antMatchers("/css/**","/js/**");
  38. }
  39. @Override
  40. protected void configure(HttpSecurity http) throws Exception {
  41. http
  42. // 由于使用的是JWT,我们这里不需要csrf
  43. .csrf().disable()
  44. .cors().and()
  45. // 基于token,所以不需要session
  46. .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and()
  47. .authorizeRequests()
  48. //.antMatchers(HttpMethod.OPTIONS, "/**").permitAll()
  49. // 允许对于网站静态资源的无授权访问
  50. .antMatchers(
  51. HttpMethod.GET,
  52. "/",
  53. "/*.html",
  54. "/favicon.ico",
  55. "/**/*.html",
  56. "/**/*.css",
  57. "/**/*.js"
  58. ).permitAll()
  59. // 对于获取token的rest api要允许匿名访问
  60. .antMatchers("/user/auth/**","/file/**","/druid/**").permitAll()
  61. // 除上面外的所有请求全部需要鉴权认证
  62. .anyRequest().authenticated();
  63. // 禁用缓存
  64. http.headers().cacheControl();
  65. http
  66. .addFilterBefore(authenticationTokenFilterBean(), UsernamePasswordAuthenticationFilter.class);
  67. }
  68. /**
  69. * 设置用户密码的加密方式为MD5加密
  70. * @return
  71. */
  72. @Bean
  73. public Md5PasswordEncoder passwordEncoder() {
  74. return new Md5PasswordEncoder();
  75. }
  76. }