java(SpringSecurity使用详解)

这篇文章主要介绍了java中SpringSecurity的实例详解的相关资料,springsecurity是一个多方面的安全认证框架,提供了基于JavaEE规范的完整的安全认证解决方案,需要的朋友可以参考下

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

    shrio,SpringSecurity:认证,授权(VIP1,vip2…)

    • 功能权限
    • 访问权限
    • 菜单权限
    • 拦截器,过滤器:大量的原生代码,冗余

    1、pom.xml

     <!--Thymeleaf-->        <dependency>            <groupId>org.thymeleaf</groupId>            <artifactId>thymeleaf-spring5</artifactId>        </dependency>        <dependency>            <groupId>org.thymeleaf.extras</groupId>            <artifactId>thymeleaf-extras-java8time</artifactId>        </dependency>

    简介

    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

     <!--security-->        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-security</artifactId>        </dependency>

    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 SecurityConfig  extends WebSecurityConfigurerAdapter {    //定义访问规则:首页每个人都可以访问,但是功能也只有特定权限的人才能访问   链式编程    //授权    @Override    protected void configure(HttpSecurity http) throws Exception {        http.authorizeRequests()                .antMatchers(\"/\").permitAll()                .antMatchers(\"/level1/**\").hasRole(\"vip1\")                .antMatchers(\"/level2/**\").hasRole(\"vip2\")                .antMatchers(\"/level3/**\").hasRole(\"vip3\");        //没有权限默认跳转到登陆页面  /login        http.formLogin();    }    //认证    /* 密码编码: BCryptPasswordEncoder()    不编码会报下面的错误    * java.lang.IllegalArgumentException: There is no PasswordEncoder mapped for the id \"null\"    * */    @Override    protected 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.html    public 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(SpringSecurity使用详解)

    源码分析

    没有权限的话会自动转发到/login

    //没有权限默认跳转到登陆页面 /login
    http.formLogin();

    java(SpringSecurity使用详解)

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

    java(SpringSecurity使用详解)

    注销及权限控制

     <!--thymeleof整合security-->        <dependency>            <groupId>org.thymeleaf.extras</groupId>            <artifactId>thymeleaf-extras-springsecurity5</artifactId>        </dependency>xmlns:sec=http://www.thymeleaf.org/extras/spring-security  

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

    1、导入依赖thymeleof整合security

     <!--thymeleof整合security-->        <dependency>            <groupId>org.thymeleaf.extras</groupId>            <artifactId>thymeleaf-extras-springsecurity5</artifactId>        </dependency>

    2、html命名空间

    <html lang=\"en\" xmlns:th=\"http://www.thymeleaf.org\"      xmlns:sec=\"http://www.thymeleaf.org/extras/spring-security\">

    3、根据用户的登录状态进行判断显示该有的信息

    java(SpringSecurity使用详解)

    4、根据源码写表单name属性

    java(SpringSecurity使用详解)

    java(SpringSecurity使用详解)

    5、实现有什么权限显示什么样的信息

    java(SpringSecurity使用详解)

    6、注销logout-404

    java(SpringSecurity使用详解)

    总结

    本片文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注趣讯吧的更多内容!

    版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/18631.html

    (0)
    nan
    上一篇 2021-08-29
    下一篇 2021-08-29

    相关推荐

    发表回复

    登录后才能评论