常用配置

https://www.cnblogs.com/zimug/p/11870861.html

  1. @Configuration
  2. public class SecurityConfig extends WebSecurityConfigurerAdapter {
  3. @Override
  4. protected void configure(HttpSecurity http) throws Exception {
  5. http.csrf().disable() //禁用跨站csrf攻击防御,后面的章节会专门讲解
  6. .formLogin()
  7. .loginPage("/login.html")//用户未登录时,访问任何资源都转跳到该路径,即登录页面
  8. .loginProcessingUrl("/login")//登录表单form中action的地址,也就是处理认证请求的路径
  9. .usernameParameter("uname")///登录表单form中用户名输入框input的name名,不修改的话默认是username
  10. .passwordParameter("pword")//form中密码输入框input的name名,不修改的话默认是password
  11. .defaultSuccessUrl("/index")//登录认证成功后默认转跳的路径
  12. .and()
  13. .authorizeRequests()
  14. .antMatchers("/login.html","/login").permitAll()//不需要通过登录验证就可以被访问的资源路径
  15. .antMatchers("/biz1").hasAnyAuthority("biz1") //前面是资源的访问路径、后面是资源的名称或者叫资源ID
  16. .antMatchers("/biz2").hasAnyAuthority("biz2")
  17. .antMatchers("/syslog").hasAnyAuthority("syslog")
  18. .antMatchers("/sysuser").hasAnyAuthority("sysuser")
  19. .anyRequest().authenticated();
  20. }
  21. }
  1. @Override
  2. public void configure(WebSecurity web) {
  3. //将项目中静态资源路径开放出来
  4. web.ignoring().antMatchers("/config/**", "/css/**", "/fonts/**", "/img/**", "/js/**");
  5. }

hasrole和hasAnyAuthority的区别

hasRole:
角色授权:授权代码,在我们返回的UserDetails的Authority需要加ROLE前缀,Controller上使用时不要加前缀;
hasAuthority:
权限授权:用户自定义的权限,返回的UserDetails的Authority只要与这里匹配就可以,这里不需要加ROLE
,名称保持一至即可
https://blog.csdn.net/qq_26878363/article/details/103632459

sendRedirect和out.close顺序问题

  1. //正确
  2. resp.setContentType("application/json;charset=utf-8");
  3. PrintWriter out=resp.getWriter();
  4. out.write(JSONObject.toJSONString(ResultInfo.success("登出成功!",200)));
  5. out.flush();
  6. out.close();
  7. //错误
  8. resp.setContentType("application/json;charset=utf-8");
  9. PrintWriter out=resp.getWriter();
  10. out.write(JSONObject.toJSONString(ResultInfo.success("登出成功!",200)));
  11. resp.sendRedirect("/index.html");
  12. out.flush();
  13. out.close();
  14. resp.sendRedirect("/index.html");

https://blog.csdn.net/a3226988/article/details/80957932

配置角色继承关系记得加空格和ROLE前缀

  1. @Bean
  2. RoleHierarchy roleHierarchy(){
  3. RoleHierarchyImpl roleHierarchy=new RoleHierarchyImpl();
  4. //不加空格无效
  5. String hierarchy="ROLE_dba > ROLE_admin > ROLE_user";
  6. roleHierarchy.setHierarchy(hierarchy);
  7. return roleHierarchy;
  8. }

非角色方式配置权限

https://www.jianshu.com/p/650a497b3a40