java|java SpringSecurity使用详解

目录

  • SpringSecurity
    • 1、pom.xml
    • 简介
      • 1、pom.xml
      • 2、Security的controller
      • 3、路径转发的controller
    • 注销及权限控制
      • 1、导入依赖thymeleof整合security
      • 2、html命名空间
      • 3、根据用户的登录状态进行判断显示该有的信息
      • 4、根据源码写表单name属性
      • 5、实现有什么权限显示什么样的信息
      • 6、注销logout-404
  • 总结

    SpringSecurity 【java|java SpringSecurity使用详解】shrio,SpringSecurity:认证,授权(VIP1,vip2…)
    • 功能权限
    • 访问权限
    • 菜单权限
    • 拦截器,过滤器:大量的原生代码,冗余

    1、pom.xml
    org.thymeleafthymeleaf-spring5org.thymeleaf.extrasthymeleaf-extras-java8time


    简介
    Spring Security是针对Spring项目的安全框架,也是Spring Boot底层安全模块默认的技术选型,他可以实现强大的Web安全控制,对于安全控制,我们仅需要引入Spring-boot-starter-security模块,进行少量的配置,即可实现强大的安全管理!
    记住几个类:
    • WebSecurityConfigurerAdapter: 自定义Security策略
    • AuthenticationManagerBuilder:自定义认证策略
    • @EnableWebSecurity: 开启WebSecurity模式 @Enablexxxx 开启某个功能
    Spring Security的两个主要目标是“认证”和“授权”(访问控制) .
    “认证”(Authentication)
    “授权”(Authorization)
    这个概念是通用的,而不是只在Spring Security中存在。

    1、pom.xml
    org.springframework.bootspring-boot-starter-security


    2、Security的controller
    package com.kuang.config; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; /*权限验证的配置类,要先继承WebSecurityConfigurerAdapter*/@Configurationpublic class SecurityConfigextends WebSecurityConfigurerAdapter {//定义访问规则:首页每个人都可以访问,但是功能也只有特定权限的人才能访问链式编程//授权@Overrideprotected void configure(HttpSecurity http) throws Exception {http.authorizeRequests().antMatchers("/").permitAll().antMatchers("/level1/**").hasRole("vip1").antMatchers("/level2/**").hasRole("vip2").antMatchers("/level3/**").hasRole("vip3"); //没有权限默认跳转到登陆页面/loginhttp.formLogin(); }//认证/* 密码编码: BCryptPasswordEncoder()不编码会报下面的错误* java.lang.IllegalArgumentException: There is no PasswordEncoder mapped for the id "null"* */@Overrideprotected void configure(AuthenticationManagerBuilder auth) throws Exception {auth.inMemoryAuthentication().passwordEncoder(new BCryptPasswordEncoder()).withUser("qin").password(new BCryptPasswordEncoder().encode("111")).roles("vip1","vip2","vip3").and().withUser("aaa").password(new BCryptPasswordEncoder().encode("111")).roles("vip1"); }}


    3、路径转发的controller
    package com.kuang.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; @Controllerpublic class PathController {@GetMapping({"/","index"})//"/""index"都会去到index.htmlpublic String Toindex(){return "index"; }@GetMapping("/toLogin")public String Tologin(){return "views/login"; }@GetMapping("/level1/{id}")//@PathVariable获得url的占位符里面的值public String ToView(@PathVariable("id")int id){return "views/level1/"+id; }@GetMapping("/level2/{id}")public String ToView2(@PathVariable("id")int id){return "views/level2/"+id; }@GetMapping("/level3/{id}")public String ToView3(@PathVariable("id")int id){return "views/level3/"+id; }}

    当然也可以在数据库中拿信息
    java|java SpringSecurity使用详解
    文章图片

    源码分析
    没有权限的话会自动转发到/login
    //没有权限默认跳转到登陆页面 /login
    http.formLogin();
    java|java SpringSecurity使用详解
    文章图片

    //开启注销
    http.logout();

    java|java SpringSecurity使用详解
    文章图片


    注销及权限控制

    org.thymeleaf.extrasthymeleaf-extras-springsecurity5xmlns:sec=http://www.thymeleaf.org/extras/spring-security

    用spring-security实现用户登录后显示用户角色的信息

    1、导入依赖thymeleof整合security
    org.thymeleaf.extrasthymeleaf-extras-springsecurity5


    2、html命名空间


    3、根据用户的登录状态进行判断显示该有的信息 java|java SpringSecurity使用详解
    文章图片


    4、根据源码写表单name属性 java|java SpringSecurity使用详解
    文章图片

    java|java SpringSecurity使用详解
    文章图片


    5、实现有什么权限显示什么样的信息 java|java SpringSecurity使用详解
    文章图片


    6、注销logout-404 java|java SpringSecurity使用详解
    文章图片


    总结 本片文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!

      推荐阅读