手把手教你写项目之中小学微课学习系统(四):安全认证

非华为电脑与MatePad Pro多屏协同实战:从安装管家到攻克连接难题 本文详细介绍了在非华为电脑上安装华为电脑管家并实现与MatePad Pro多屏协同的完整指南。从安装步骤、常见连接失败解决方案到华为账号绑定技巧,提供了实用的操作方法和硬件优化建议,帮助用户攻克连接难题,提升多屏协同的稳定性和流畅度。 阅读详情

阅读前请先下载项目源码,边读边看源码以加深理解和实操,
源码地址已放于文章末尾!

效果预览:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

04-安全认证-Aunt-I-don’t-want-to-work-hard-anymore!

各位小伙伴,前方高能预警!今天我们要聊的话题,是后端开发中“皇冠上的明珠”——安全认证。如果说之前的CRUD是“盖房子”,那今天我们做的就是给房子装上“防盗门”和“监控系统”。没有它,你的系统就等于是在“裸奔”,任何人都可以进来“为所欲为”。

在上一章的结尾,我留了一个巨大的“坑”:我们的用户信息,特别是密码,是明文存在数据库里的!这要是被“脱裤”,那项目负责人就得卷铺盖走人了。而且,我们的API接口也没有任何保护,谁都可以调用。这可不行!

所以,今天咱们要解决两个核心问题:

  1. 密码加密:绝不能让密码明文出现在数据库里。
  2. 接口认证:用户登录后才能访问受保护的资源,就像你得刷门禁卡才能进小区一样。

为了解决这两个问题,我们要请出两位“大神”:Spring Security 和 JWT。

Spring Security + JWT:后端界的“黄金搭档”

  • Spring Security: 这是Spring家族提供的专业“保安队”。它功能极其强大,能提供一整套完整的安全服务,包括认证(你是谁?)、授权(你能干啥?)、攻击防护等。但它有个毛病,就是配置起来有点复杂,像个固执的老头。
  • JWT (JSON Web Token): 这是一种轻量级的认证规范。用户登录成功后,服务器会生成一个加密的“令牌”(Token),像一张“限时通行证”,发给客户端。之后客户端每次请求需要认证的接口时,都必须带上这张“通行证”。服务器看到通行证合法,就放行。

为啥要把它俩结合起来?
Spring Security默认的认证方式是基于Session的,这在前后端分离的项目里不太好使。而JWT是无状态的,天生就适合RESTful API。所以我们用Spring Security的强大框架,但把它的核心认证逻辑换成JWT的“令牌”模式,取长补短,完美!

这个过程就像阿姨不想努力了…啊不,是《让子弹飞》里的场景:

客户端 (张三) 服务器 (黄四郎) 我是张三(zhangsan),密码123,要登录! 查数据库,发现zhangsan密码(加密后)正确 登录成功!给你一张“委任状”(JWT Token) 张三把“委-任状”揣兜里 我要看我的课程列表(带上“委任状”) 检查“委任状”是不是我发的,过没过期 没问题,给你课程列表数据 我想删库跑路(没带“委任状”) “没有委任状,你算个屁!”(401 Unauthorized) 客户端 (张三) 服务器 (黄四郎)

第一步:添加新的“兵器”

老规矩,先在 pom.xml 里加入我们需要的依赖:

<!-- ... other dependencies ... -->

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

<!-- JWT (Java JWT) -->
<dependency>
    <groupId>com.auth0</groupId>
    <artifactId>java-jwt</artifactId>
    <version>3.18.3</version> <!-- 使用一个较新的稳定版本 -->
</dependency>

加完之后,记得刷新一下你的Maven项目,让它把新的“兵器”下载回来。

第二步:编写JWT工具类

我们需要一个工具类来专门负责生成和校验JWT。在 com.weke.learningsystem 包下创建一个新的包 utils,然后在里面创建 JwtUtil.java。

package com.weke.learningsystem.utils;

import com.auth0.jwt.JWT;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.interfaces.DecodedJWT;
import java.util.Date;

public class JwtUtil {

    private static final String SECRET_KEY = "your-secret-key"; // 密钥,生产环境一定要更复杂
    private static final long EXPIRATION_TIME = 864_000_00; // 24小时

    // 生成Token
    public static String generateToken(String username) {
        return JWT.create()
                .withSubject(username)
                .withExpiresAt(new Date(System.currentTimeMillis() + EXPIRATION_TIME))
                .sign(Algorithm.HMAC512(SECRET_KEY));
    }

    // 校验Token并获取用户名
    public static String validateToken(String token) {
        DecodedJWT jwt = JWT.require(Algorithm.HMAC512(SECRET_KEY))
                .build()
                .verify(token);
        return jwt.getSubject();
    }
}

注意: SECRET_KEY 是加密的密钥,非常重要,千万不要泄露!

第三步:改造用户服务(注册与登录)

现在,我们要对 UserService 进行“手术”,实现真正的注册和登录逻辑。

首先,修改 UserService 接口,增加两个新方法:

UserService.java:

// ... imports ...
public interface UserService extends IService<User> {
    User register(User user);
    String login(String username, String password);
}

然后,在 UserServiceImpl 中实现这两个方法:

UserServiceImpl.java:

// ... imports ...
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {

    @Autowired
    private BCryptPasswordEncoder passwordEncoder;

    @Override
    public User register(User user) {
        // 使用BCrypt对密码进行加密
        String encodedPassword = passwordEncoder.encode(user.getPassword());
        user.setPassword(encodedPassword);
        this.save(user); // this.save()是ServiceImpl自带的方法
        return user;
    }

    @Override
    public String login(String username, String password) {
        User user = this.query().eq("username", username).one();
        if (user != null && passwordEncoder.matches(password, user.getPassword())) {
            // 密码匹配,生成JWT
            return JwtUtil.generateToken(username);
        }
        // 登录失败
        return null;
    }
}

代码解读:

  • BCryptPasswordEncoder: 这是Spring Security提供的密码加密工具。我们不能直接把它 new 出来,而是要把它配置成一个Bean,让Spring来管理。
  • passwordEncoder.encode(): 将用户传来的原始密码,加密成一长串谁也看不懂的字符串。
  • passwordEncoder.matches(): 用于比对用户输入的密码和数据库中加密过的密码是否匹配。

配置密码加密器Bean:

为了让 BCryptPasswordEncoder 能被 @Autowired,我们需要在主启动类 LearningSystemApplication 的同级或者上级创建一个 config 包,并在里面创建一个 SecurityConfig 类。

config/SecurityConfig.java

package com.weke.learningsystem.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;

@Configuration
public class SecurityConfig {

    @Bean
    public BCryptPasswordEncoder bCryptPasswordEncoder() {
        return new BCryptPasswordEncoder();
    }
}

第四步:改造Controller

有了新的业务逻辑,我们的 UserController 也要与时俱进。

// ... imports ...
import java.util.Map;

@RestController
@RequestMapping("/auth") // 我们把路径改成/auth,更符合语义
public class AuthController { // 类名也改一下

    @Autowired
    private UserService userService;

    // 注册
    @PostMapping("/register")
    public User register(@RequestBody User user) {
        return userService.register(user);
    }

    // 登录
    @PostMapping("/login")
    public Map<String, String> login(@RequestBody Map<String, String> credentials) {
        String username = credentials.get("username");
        String password = credentials.get("password");
        String token = userService.login(username, password);
        if (token != null) {
            return Map.of("token", token);
        }
        // 在实际项目中,应该返回更详细的错误信息
        throw new RuntimeException("Invalid credentials");
    }
}

我们把原来的 UserController 改成了 AuthController,专门负责认证。原来的查询用户接口暂时可以注释掉,因为它们还没有受到保护。

第五步:配置Spring Security

这是最硬核的一步,我们要告诉Spring Security这个“老头”按我们的规矩来办事:放行登录和注册接口,其他的接口需要带“令牌”才能访问。

修改我们刚才创建的 SecurityConfig.java:

// ... imports ...
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.config.http.SessionCreationPolicy;

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    // ... BCryptPasswordEncoder的Bean ...

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.cors().and().csrf().disable() // 关闭csrf
            .authorizeRequests()
            .antMatchers("/auth/**").permitAll() // 放行/auth/下的所有请求
            .anyRequest().authenticated() // 其他所有请求都需要认证
            .and()
            // 我们不再需要session了,所以把它关了
            .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
            
        // 这里我们后面还要加上JWT的过滤器
    }
}

注意:WebSecurityConfigurerAdapter 在新版的Spring Security中已被弃用,但为了方便理解,我们暂时先用着。新版的配置方式我们后续可以再升级。

现在,重启你的应用。你会发现,如果你直接访问 http://localhost:8080/users(假如你没删掉这个接口),会直接返回401或403错误,说明我们的“防盗门”已经生效了!

而你访问 /auth/register 和 /auth/login 则是正常的。你可以试试注册一个新用户,然后用新用户登录,看看是否能成功拿到一长串的JWT Token。

下一期预告:
我们已经成功生成了Token,但还没用上它!服务器还不知道怎么去校验客户端传来的Token。下一章,我们将编写一个JWT认证过滤器,把它加入到Spring Security的“安保流程”中,真正完成认证闭环。同时,我们也要开始捣鼓一下“尘封已久”的前端代码,让它跟我们的新后端“对上暗号”!

源码下载地址:
https://download.youkuaiyun.com/download/THMAIL/91753658

储能BMS三级架构解析:从模组到堆的管理与控制 本文深入解析了储能电池管理系统(BMS)的核心三级架构,即电池模组管理层(BMU)、电池簇管理层(BCMU)和电池堆管理层(BAMS)。文章详细阐述了各级的职能分工与协同机制,从底层数据采集、均衡管理,到中层信息汇总与安全控制,再到顶层的系统总控与对外通信,揭示了该架构如何实现大规模储能电池的精细化、安全与高效管理。 阅读详情

相关推荐

REST-meta-MDD Data总结

sMRI数据使用:nwc1、nwc2、nwc3(同样数据集相关论坛中有相关信息指向需要使用wc1、wc2、wc3)多方咨询与讨论后决定使用nwc数据,这里说明wc数据相对wc数据要大的多如wc1的大小为1.33GB,而nwc1的数据却有6.90GB。VBM文件:/REST-meta-MDD/Sharing/REST-meta-MDD-VBM- phase1 -Sharing.tar.gz。1、Excel中的表型信息:1-男,2-女;-9999或空白表示缺少数据。

2404_88295660的博客 1534

springboot中小学数字化教学资源管理平台

Spring Boot作为一种用于构建独立的、生产级的基于Spring框架的应用程序的框架,其轻量级、快速部署和易于使用的特点,使得开发人员可以更加专注于业务逻辑的实现,而不是配置文件的编写。中小学的教学资源管理也面临着新的挑战和机遇,传统的教学资源管理方式效率低下,资源分散且难以共享,导致教师和学生在获取、管理教学资源时面临诸多困难。综上所述,基于Spring Boot的中小学数字化教学资源管理平台的开发背景是多方面的,包括教育信息化的需求、提高教学质量和效率、技术发展的支持以及满足多样化的用户需求等。

pingfan_yu的博客 1489

Autodesk全家桶安装总报错1603?一个服务设置搞定3dsMax和CAD安装回滚问题

本文详细解析了Autodesk全家桶安装过程中常见的1603错误,特别是3ds Max和CAD安装回滚问题。通过调整AdskLicensingService服务的账户权限,提供四步修复法和安装流程优化策略,帮助用户彻底解决安装难题,提升Autodesk软件的安装成功率。

weixin_30955617的博客 1119

基于SpringBoot的中小学智能学习系统的设计与实现源码+文档

基于SpringBoot的中小学智能学习系统摘要 随着教育信息化与“双减”政策深入推进,线上智能化、个性化学习成为中小学课堂教学的重要补充形式。传统中小学教学以线下课堂讲授、纸质作业、统一刷题、人工批改和线下答疑为主,存在教学模式固化、学习资源单一、习题更新滞后、学情统计困难、师生互动不及时、无法因材施教等诸多问题。教师难以精准掌握每位学生的知识薄弱点,学生只能被动接受统一教学内容,个性化辅导、针对性练习和自主查漏补缺需求得不到满足,传统教学模式已无法适配现代化智慧教育的发展趋势。为丰富中小学教学形式、优化

全网粉丝10W+、全栈领域优质创作者、掘金、阿里云等社区博客专家、专注于全栈领域和毕业项目实战 35

JESD204B系统设计实战:如何用SYSREF信号搞定多设备时钟同步(附时序图详解)

本文深入探讨了JESD204B系统中SYSREF信号在多设备时钟同步中的关键作用与实现技巧。通过详细分析SYSREF信号的生成、PCB布局和时序调整,提供了一套完整的解决方案,帮助工程师解决高速数据转换器与FPGA协同工作中的时钟同步问题。文章还包含时序图详解和实测调试技巧,助力提升系统性能。

weixin_29313239的博客 454

EMQX 结合MySQL实现精细化ACL权限管理实战

本文详细介绍了如何通过EMQX结合MySQL实现精细化的ACL权限管理,提升物联网设备接入和消息传输的安全性。内容包括环境准备、基础配置、权限规则设计技巧以及高级应用与性能优化方案,帮助开发者快速掌握动态生效、便于管理的权限控制方法。

weixin_28683689的博客 196

基于springboot的中小学数字化教学资源管理平台系统

本中小学数字化教学资源管理平台系统基于 Java 语言,利用 Spring Boot 框架进行开发,旨在为中小学教育提供一个全面、高效、便捷的教学资源管理解决方案。 该平台具有丰富的功能以满足教学资源管理的多方面需求。在资源上传方面,支持教师将各类教学资源,如教案、课件、试题、教学视频等上传至平台,系统提供友好的操作界面和高效的上传机制,确保资源上传的顺利进行。同时,对上传的资源进行分类管理,按照学科、年级、教材版本等维度进行细致分类,方便教师和学生快速查找所需资源。 资源检索功能强大,用户可以通过关键词、

全网粉丝10W+、全栈领域优质创作者、掘金、阿里云等社区博客专家、专注于全栈领域和毕业项目实战 1188

Agent + 监控平台:自动诊断告警根因

根因分析、智能监控、AI Agent、告警风暴、异常检测、可观测性、故障诊断在现代分布式系统中,快速定位和解决问题是维持系统稳定性的关键。传统的监控系统虽然能够生成大量告警,但往往缺乏对告警根因的自动诊断能力,导致运维团队在告警风暴中难以快速定位问题。本文深入探讨了将AI Agent技术与监控平台结合,实现告警根因自动诊断的技术架构、理论基础和实现方法。我们将从第一性原理出发,分析根因诊断问题的本质,介绍基于Agent的智能监控系统设计,并通过实际案例展示其应用价值。文章同时涵盖了从理论到实践的全链路,包括

AIGC应用创新大全的博客 304

基于SpringBoot的中小学课后延时服务系统毕业设计项目

在 “双减” 政策深入实施的背景下,中小学课后延时服务成为教育体系的重要组成部分,但在实际运营中仍面临课程安排复杂、师资与场地资源协调困难、家校沟通不畅、安全管理压力大等问题:课程设置缺乏多样性与个性化,难以满足学生全面发展需求;教师排班与考勤统计依赖人工操作,效率低下;家长难以及时获取孩子在校情况与活动照片;安全监管与应急响应缺乏信息化支撑。 基于 SpringBoot 的中小学课后延时服务系统,依托其高效稳定的后端架构,实现课程管理、智能排班、学生报名、考勤签到、家校互动、安全管理与数据分析等功能。系统

全网粉丝10W+、全栈领域优质创作者、掘金、阿里云等社区博客专家、专注于全栈领域和毕业项目实战 995

基于MYD-YT153与AD7616的16通道高速ADC采集系统实战指南

在嵌入式系统与工业数据采集领域,模拟信号采集是连接物理世界与数字系统的关键技术。其核心原理是通过模数转换器(ADC)将连续的模拟电压信号转换为离散的数字码值,供处理器处理。这项技术的价值在于实现了对温度、压力、振动等关键物理量的精确感知与数字化,是工业自动化、设备监测、科学实验等场景的基石。本文聚焦于**多通道**、**高精度**采集这一常见需求,深入剖析如何利用全志T153处理器的LocalBus并行总线接口,高效驱动ADI的16位、16通道同步采样ADC芯片AD7616,构建一个稳定可靠的高速数据采集系

weixin_30335353的博客 443

保研考研机试攻略:python笔记(4)

保研考研机试攻略:python笔记(4)二分法+最大公约数+最小公倍数+素数判断+幂次方mod方法+匹配问题+哈希算法+哈夫曼编码+二叉树

qq_63349644的博客 1096

基于SSM框架的中小学生阅读能力培养系统计算机毕业设计项目

当前中小学阅读教育存在个性化不足、过程难追踪的问题:阅读材料统一推送,难以适配不同年级、兴趣的学生;阅读效果依赖课后测试,缺乏对阅读过程(如停留时长、批注内容)的分析;教师难精准把握学生薄弱环节(如理解推理、信息提取能力),辅导针对性不足,制约阅读能力的分层提升。 基于 SSM(Spring+SpringMVC+MyBatis)框架的中小学生阅读能力培养系统,构建个性化阅读培养闭环: 学生端:按年级课标与阅读水平推荐分级读物(含图文、有声书),支持在线批注、词汇查询,系统自动记录阅读轨迹(如高频停顿段落);

全网粉丝10W+、全栈领域优质创作者、掘金、阿里云等社区博客专家、专注于全栈领域和毕业项目实战 841

【网络安全 | 渗透工具】密码字典生成工具crunch、cupp安装使用教程

Crunch是一个常用的密码破解工具,它可以根据指定的字符集、长度和模式生成各种可能的密码并进行暴力破解。同时,Crunch可以将生成的密码保存到文件中,以便在破解工具中使用。在进行渗透测试时,手动收集密码字典是十分耗时的,利用密码字典生成工具可以大幅缩短时间,提高爆破宽度。

等风来 8421

基于SpringBoot+Vue的中小学数字化教学资源管理平台系统(源码+LW+调试文档+讲解)

基于 SpringBoot+Vue 的中小学数字化教学资源管理平台系统,为中小学教育教学资源的整合、共享与高效利用提供了有力支撑。 该系统功能丰富多样。资源分类管理模块将教学资源按照学科(语文、数学、英语等)、年级、资源类型(课件、教案、试题、视频等)进行细致分类,方便教师快速定位所需资源。资源上传功能允许教师上传自己精心制作的教学资源,并填写详细的资源信息,如资源名称、适用年级、教学目标等,同时系统自动对上传资源进行格式检查与病毒查杀,确保资源质量与安全性。资源审核机制由管理员对教师上传的资源进行审核,审

全网粉丝10W+、全栈领域优质创作者、掘金、阿里云等社区博客专家、专注于全栈领域和毕业项目实战 1427

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

基于SpringBoot的中小学生课后服务管理系统毕业设计项目

在 “双减” 政策持续推进的背景下,中小学课后服务已成为学校教育的重要组成部分。然而,传统管理模式存在课程安排不灵活、师资与场地协调困难、家校沟通不畅、安全管理压力大等问题:课程设置单一,难以满足学生多样化需求;教师排班与考勤统计依赖人工,效率低下;家长无法及时了解学生在校情况;安全监管缺乏信息化支撑,应急响应不及时。 基于 SpringBoot 的中小学生课后服务管理系统,依托其高效稳定的后端架构,构建集课程管理、智能排班、学生报名、考勤签到、家校互动、安全管理与数据分析于一体的综合性平台。系统支持多角色

全网粉丝10W+、全栈领域优质创作者、掘金、阿里云等社区博客专家、专注于全栈领域和毕业项目实战 771

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

078_基于springboot的中小学数字化教学资源管理平台

博主介绍:CodeMentor毕业设计领航者、全网关注者30W+群落,InfoQ特邀专栏作家、技术博客领航者、InfoQ新星培育计划导师、Web开发领域杰出贡献者,博客领航之星、开发者头条/腾讯云/AWS/Wired等平台优选内容创作者、深耕Web开发与学生毕业设计实战指导,与高校教育者/资深讲师/行业专家深度对话🤝。

2301_76419561的博客 884

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【Springboot毕设全套源码+文档】基于springboot中小学课后服务系统的设计与实现(丰富项目+远程调试+讲解+定制)

主要内容:免费开题报告、任务书、全bao定制+中期检查PPT、代码编写、🚢文编写和辅导、🚢文降重、长期答辩答疑辅导、一对一专业代码讲解辅导答辩、模拟答辩演练、和理解代码逻辑思路。

9

Go语言基于IPFS的中小学优质教学资源平台的设计与实现

本文介绍了一个基于IPFS的中小学优质教学资源平台,旨在解决传统教育资源存储方式存在的文件分散、共享效率低、安全性不足等问题。平台采用Go语言开发,结合IPFS的去中心化存储技术,实现教学资源的高效存储与共享。系统采用分层架构设计,包含用户层、应用层、服务层和数据层,支持管理员、教师和学生三类用户的差异化功能。通过IPFS的内容寻址机制和Merkle DAG数据结构,平台确保了资源的高效访问和完整性维护。文章还详细阐述了Go语言和IPFS的技术优势,展示了系统界面,并讨论了性能优化与安全防护措施。该平台为教

z459382737的博客 1028

基于微信小程序的中小学生个性化阅读平台的设计与实现计算机毕业设计项目

在中小学生阅读场景中,传统模式常受 “资源杂、匹配差、监督难” 困扰:市面上阅读资源良莠不齐,家长难筛选符合孩子年级、认知水平与兴趣的书籍,易出现 “选书盲目” 问题;阅读多为单向输入,缺乏个性化引导,比如低年级学生对复杂文本理解困难、高年级学生找不到深度拓展内容,难以激发持续阅读兴趣;学校与家长对学生阅读进度、理解程度的监督反馈脱节,学生读没读、读得怎么样全靠自觉,阅读效果难以保障。​ 基于微信小程序的中小学生个性化阅读平台,依托其 “低门槛、强适配、可互动” 的优势,构建 “资源精准匹配 - 阅读过程引

全网粉丝10W+、全栈领域优质创作者、掘金、阿里云等社区博客专家、专注于全栈领域和毕业项目实战 1084

【Springboot毕设全套源码+文档】基于springboot中小学教育辅导系统设计与实现(丰富项目+远程调试+讲解+定制)

主要内容:免费开题报告、任务书、全bao定制+中期检查PPT、代码编写、🚢文编写和辅导、🚢文降重、长期答辩答疑辅导、一对一专业代码讲解辅导答辩、模拟答辩演练、和理解代码逻辑思路。

134

基于ssm的中小学教师进修培训管理系统的设计与实现(源码+lw+部署文档+讲解等)

功能对照表的目的是帮助开发团队了解软件的功能状况,及时修复功能缺陷和错误,并提高软件的质量和稳定性。功能编号功能名称功能描述功能状态备注1用户登录用户可以通过提供用户名和密码登录系统正常用户名和密码的验证机制安全性2用户注册用户可以通过提供用户名、密码和电子邮件地址注册新的账户正常无3密码修改用户可以通过提供原密码和新密码修改已有账户的密码正常用户密码的修改操作是否需要提供安全认证4用户信息查看用户可以查看自己的个人信息,如用户名、电子邮件地址、角色等正常无。

2401_82770201的博客 1130

中小学教室多媒体电脑安全登录解决方案

安当SLA操作系统双因素登录针对中小学教室多媒体电脑面临的学生随意登录问题,提供了以下有效的解决方案: 一、增强安全性 1. 双重认证机制: 在原有的静态密码认证基础上,增加了第二重保护,如手机令牌、硬件令牌、安全UKey、微信扫码、钉钉扫码等多种动态密码认证形式。 这种双重认证机制显著提升了账户的安全性,即使攻击者知道了用户的静态密码,也无法仅凭此密码登录系统。 2. 防止暴力破解和弱密码攻击: 通过增加动态密码的要求,有效抵御了暴力破解和弱密码攻击。 攻击者即使截获到静态密码。。。。。。

Xi_er_的博客 1004

中小学生成长档案管理系统信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】

中小学生成长档案管理系统信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】,拿走直接用(附源码,数据库,视频,可提供说明文档(通过*AIGC*)*技术包括:MySQL、VueJS、ElementUI、(Python或者Java或者.NET)等等*功能如图所示。可以滴我获取详细的视频介绍

yunque__的博客 482

SSM毕设选题推荐:基于ssm的中小学生阅读能力培养系统阅读能力训练平台【附源码、mysql、文档、调试+代码讲解+全bao等】

主要内容:免费开题报告、任务书、全bao定制+中期检查PPT、代码编写、🚢文编写和辅导、🚢文降重、长期答辩答疑辅导、一对一专业代码讲解辅导答辩、模拟答辩演练、和理解代码逻辑思路。

项目帮 867

计算机SSM毕设实战-基于SSM框架的中小学生阅读能力培养系统的设计与实现基于ssm的中小学生阅读能力培养系统【完整源码+LW+部署说明+演示视频,全bao一条龙等】

主要内容:免费开题报告、任务书、全bao定制+中期检查PPT、代码编写、🚢文编写和辅导、🚢文降重、长期答辩答疑辅导、一对一专业代码讲解辅导答辩、模拟答辩演练、和理解代码逻辑思路。

项目帮 966

基于神经网络的学生学习情况分析系统的设计与实现毕业设计项目源码

基于神经网络的学生学习情况分析系统,直击传统学习分析 “数据维度单一、问题定位滞后、个性化指导缺失” 的核心痛点,依托神经网络强大的非线性拟合与特征挖掘能力,构建 “多源数据整合 + 学习状态诊断 + 个性化提升” 的一体化分析体系。传统模式下,学习情况分析仅依赖考试成绩,难以全面反映学生知识掌握程度与学习习惯;教师凭经验判断学生薄弱环节,缺乏精准数据支撑;个性化辅导方案制定效率低,无法满足不同学生的学习需求,尤其在中小学分层教学与高校自主学习场景,学习分析的针对性与实用性不足。该系统采集学生多维度学习数据

全网粉丝10W+、全栈领域优质创作者、掘金、阿里云等社区博客专家、专注于全栈领域和毕业项目实战 659
上一篇: 手把手教你写项目之中小学微课学习系统(三):用户模块
下一篇: 手把手教你写项目之中小学微课学习系统(五):前端初探-让页面“活”起来
THMAIL
博客等级 码龄10年 2434粉丝 432原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

THMAIL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值