SpringSecurity安全框架(课时二十一)

本文涉及的产品
访问控制,不限时长
简介: SpringSecurity安全框架(课时二十一)

本博文讲述:在SpringSecurity框架中,SpringBoot是如何对资源整合的:

SpringSecurity(安全):一个安全的框架,其实通过过滤器和拦截器也可以实现

首先我们看下它的官网介绍:Spring Security官网地址

Spring Security is a powerful and highly customizable authentication and access-control framework. It is the de-facto standard for securing Spring-based applications.


Spring Security is a framework that focuses on providing both authentication and authorization to Java applications. Like all Spring projects, the real power of Spring Security is found in how easily it can be extended to meet custom requirements


Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架。它实际上是保护基于spring的应用程序的标准。


Spring Security是一个框架,侧重于为Java应用程序提供身份验证和授权。与所有Spring项目一样,Spring安全性的真正强大之处在于它可以轻松地扩展以满足定制需求


在用户认证方面,Spring Security 框架支持主流的认证方式,包括 HTTP 基本认证、HTTP 表单验证、HTTP 摘要认证、OpenID 和 LDAP 等。在用户授权方面,Spring Security 提供了基于角色的访问控制和访问控制列表(Access Control List,ACL),可以对应用中的领域对象进行细粒度的控制。


认识SpringSecurity


Spring Security 是针对Spring项目的安全框架,也是Spring Boot底层安全模块默认的技术选型,他可以实现强大的Web安全控制,对于安全控制,我们仅需要引入 spring-boot-starter-security 模块,进行少量的配置,即可实现强大的安全管理!


记住几个类:

WebSecurityConfigurerAdapter:自定义Security策略

AuthenticationManagerBuilder:自定义认证策略

@EnableWebSecurity:开启WebSecurity模式 Spring Security的两个主要目标是 “认证” 和 “授权”(访问控制)。 “

认证”(Authentication) 身份验证是关于验证您的凭据,如用户名/用户ID和密码,以验证您的身份。 身份验证通常通过用户名和密码完成,有时与身份验证因素

结合使用。 “授权” (Authorization) 授权发生在系统成功验证您的身份后,最终会授予您访问资源(如信息,文件,数据库,资金,位置,几乎任何内容)的完全权限。 这个概念是通用的,而不是只在Spring Security 中存在。

pom.xml文件一

 

pom.xml1文件二

 

pom.xml文件整合

RouderController控制器的类

package com.springboot.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping({"/" ,"index"})
public class RouderController {
    public  String index(){
        return "index.html";
    }
    @RequestMapping("/tologin")
        public String tologin() {
            return "views/login";
        }
    @RequestMapping("/leve1/{id}")
    public String leve1(@PathVariable("id") int id) {
        return "views/leve1/"+id;
    }
    @RequestMapping("/leve2/{id}")
    public String leve2(@PathVariable("id") int id) {
        return "views/leve2/"+id;
    }
    @RequestMapping("/leve3/{id}")
    public String leve3(@PathVariable("id") int id) {
        return "views/leve3/"+id;
    }
}
package com.springboot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
//启动类
@SpringBootApplication
public class SpringbootSpringsecurityApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringbootSpringsecurityApplication.class, args);
    }
}

核心重点在这个类上:SecurityConfig  图片演示学习



   //认证
    //密码编码 异常
    //   .withUser("Hellow").password(new BCryptPasswordEncoder().encode("123442")).roles("vip1");
    //    在5中要将密码加密·
@Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.inMemoryAuthentication().passwordEncoder(new BCryptPasswordEncoder())
                .withUser("小明").password(new BCryptPasswordEncoder().encode("1234")).roles("vip1", "vip3")
                .and()
                .withUser("root").password(new BCryptPasswordEncoder().encode("12345")).roles("vip1", "vip2", "vip3")
                .and()
                .withUser("xiaming").password(new BCryptPasswordEncoder().encode("12344")).roles("vip2")
                .and()
                .withUser("Hellow").password(new BCryptPasswordEncoder().encode("123442")).roles("vip1");
    }

框架整合技术

 

头部

<!--登录注销-->
<div class="right menu">
    <!-- 如果没登录-->
    <!--如果未登录-->
    <div sec:authorize="!isAuthenticated()">
        <a class="item" th:href="@{/login}">
            <i class="address card icon"></i> 登录
        </a>
    </div>
    <!--如果已登录-->
    <!--注销按钮-->
    <div sec:authorize="isAuthenticated()">
        <a class="item" th:href="@{/logout}">
            <i class="address card icon"></i> 注销
        </a>
    </div>
    <div sec:authorize="isAuthenticated()">
<!--        取出用户名-->
        <a class="item">
            <i class="address card icon"></i>
<!--    获得信息        -->
            用户名:<span sec:authentication="principal.username"></span>
            角色:<span sec:authentication="principal.authorities"></span>
        </a>
    </div>

 

 

控制台

 


Why

 

 

总结:认识安全框架

Spring Security is a powerful and highly customizable authentication and access-control framework. It is the de-facto standard for securing Spring-based applications.


Spring Security is a framework that focuses on providing both authentication and authorization to Java applications. Like all Spring projects, the real power of Spring Security is found in how easily it can be extended to meet custom requirements


Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架。它实际上是保护基于spring的应用程序的标准。


Spring Security是一个框架,侧重于为Java应用程序提供身份验证和授权。与所有Spring项目一样,Spring安全性的真正强大之处在于它可以轻松地扩展以满足定制需求


在用户认证方面,Spring Security 框架支持主流的认证方式,包括 HTTP 基本认证、HTTP 表单验证、HTTP 摘要认证、OpenID 和 LDAP 等。在用户授权方面,Spring Security 提供了基于角色的访问控制和访问控制列表(Access Control List,ACL),可以对应用中的领域对象进行细粒度的控制。


相关实践学习
消息队列+Serverless+Tablestore:实现高弹性的电商订单系统
基于消息队列以及函数计算,快速部署一个高弹性的商品订单系统,能够应对抢购场景下的高并发情况。
云安全基础课 - 访问控制概述
课程大纲 课程目标和内容介绍视频时长 访问控制概述视频时长 身份标识和认证技术视频时长 授权机制视频时长 访问控制的常见攻击视频时长
相关文章
|
9月前
|
NoSQL Java MongoDB
墙裂推荐!超全SpringBoot2.x的奇技淫巧,满足你一切开发需求
一个小伙伴最近参加某一线互联网公司的面试,被问到了一些Spring Boot源码的问题,看看大家能否答出来:
|
2月前
|
XML Java 数据格式
🌱 深入Spring的心脏:Bean配置的艺术与实践 🌟
本文深入探讨了Spring框架中Bean配置的奥秘,从基本概念到XML配置文件的使用,再到静态工厂方式实例化Bean的详细步骤,通过实际代码示例帮助读者更好地理解和应用Spring的Bean配置。希望对你的Spring开发之旅有所助益。
162 3
|
3月前
|
安全 Java 数据安全/隐私保护
适合才最美:Shiro安全框架使用心得
大家好,我是 V 哥。Apache Shiro 是一个强大且灵活的 Java 安全框架,专注于认证、授权、会话管理和加密功能。它常用于保护 Java 应用的访问控制,特别是在 Web 应用中。相比 Spring Security,Shiro 设计更简洁,适合轻量级应用,并且在许多方面具有更好的易用性和扩展性。本文将介绍 Shiro 的核心概念、主要功能和优势,并通过一个典型的 Shiro 应用来展示其基本使用方法。
240 4
|
6月前
|
Java 数据库连接 Spring
一文讲明 Spring 的使用 【全网超详细教程】
这篇文章是一份全面的Spring框架使用教程,涵盖了从基础的项目搭建、IOC和AOP概念的介绍,到Spring的依赖注入、动态代理、事务处理等高级主题,并通过代码示例和配置文件展示了如何在实际项目中应用Spring框架的各种功能。
一文讲明 Spring 的使用 【全网超详细教程】
|
6月前
|
Java Spring Apache
Spring Boot邂逅Apache Wicket:一次意想不到的完美邂逅,竟让Web开发变得如此简单?
【8月更文挑战第31天】Apache Wicket与Spring Boot的集成提供了近乎无缝的开发体验。Wicket以其简洁的API和强大的组件化设计著称,而Spring Boot则以开箱即用的便捷性赢得开发者青睐。本文将指导你如何在Spring Boot项目中引入Wicket,通过简单的步骤完成集成配置。首先,创建一个新的Spring Boot项目并在`pom.xml`中添加Wicket相关依赖。
163 0
|
9月前
|
Java 应用服务中间件 API
【SpringBoot技术专题】「开发实战系列」Undertow web容器的入门实战及调优方案精讲
【SpringBoot技术专题】「开发实战系列」Undertow web容器的入门实战及调优方案精讲
257 0
|
9月前
|
存储 Java 关系型数据库
SpringSecurity入门案例——基本功能讲解
SpringSecurity入门案例——基本功能讲解
47 0
|
存储 监控 数据可视化
外行人都能看得懂的Spring Cloud服务注册与发现,错过了血亏!
外行人都能看得懂的Spring Cloud服务注册与发现,错过了血亏!
|
存储 NoSQL Oracle
SpringBoot资源整合——SpringData(课时十八)
SpringBoot资源整合——SpringData(课时十八)
125 0
|
存储 缓存 安全
SpringBoot——Shiro的一些安全介绍(课时二十二)
SpringBoot——Shiro的一些安全介绍(课时二十二)
124 0

热门文章

最新文章