基于Web的在线学习平台设计与实现(源码+lw+部署文档+讲解等)

news2024/11/30 14:34:26

文章目录

  • 前言
  • 具体实现截图
  • 论文参考
  • 详细视频演示
  • 为什么选择我
    • 自己的网站
    • 自己的小程序(小蔡coding)
    • 有保障的售后
    • 福利
  • 代码参考
  • 源码获取

前言

💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗
👇🏻 精彩专栏 推荐订阅👇🏻
2023-2024年最值得选的微信小程序毕业设计选题大全:100个热门选题推荐✅

2023-2024年最值得选的Java毕业设计选题大全:500个热门选题推荐✅

Java精品实战案例《500套》

微信小程序项目精品案例《500套》

🌟文末获取源码+数据库🌟
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人

具体实现截图

管理员:首页、个人中心、用户管理、学习路线管理、阶段类型管理、博客详情管理、系统管理等功能
普通用户:首页、个人中心、博客详情管理等

Image
Image

Image
Image

论文参考

Image

详细视频演示

请联系我获取更详细的演示视频

为什么选择我

自己的网站

网站上传的项目均为博主自己收集和开发的,质量都可以得到保障,适合自己懂一点程序开发的同学使用!

自己的小程序(小蔡coding)

为了方便同学们使用,我开发了小程序版的,名字叫小蔡coding。同学们可以通过小程序快速搜索和定位到自己想要的程序

有保障的售后

福利

每推荐一位同学,推荐费一位100!
a51e38c5bf9f17df58ffdbbe74c16c44_720

代码参考

@IgnoreAuth
@PostMapping(value = "/login")
public R login(String username, String password, String captcha, HttpServletRequest request) {
   UsersEntity user = userService.selectOne(new EntityWrapper<UsersEntity>().eq("username", username));
   if(user==null || !user.getPassword().equals(password)) {
      return R.error("账号或密码不正确");
   }
   String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
   return R.ok().put("token", token);
}

	@Override
	public String generateToken(Long userid,String username, String tableName, String role) {
		TokenEntity tokenEntity = this.selectOne(new EntityWrapper<TokenEntity>().eq("userid", userid).eq("role", role));
		String token = CommonUtil.getRandomString(32);
		Calendar cal = Calendar.getInstance();   
    	cal.setTime(new Date());   
    	cal.add(Calendar.HOUR_OF_DAY, 1);
		if(tokenEntity!=null) {
			tokenEntity.setToken(token);
			tokenEntity.setExpiratedtime(cal.getTime());
			this.updateById(tokenEntity);
		} else {
			this.insert(new TokenEntity(userid,username, tableName, role, token, cal.getTime()));
		}
		return token;
	}



/**
 * 权限(Token)验证
 */
@Component
public class AuthorizationInterceptor implements HandlerInterceptor {

    public static final String LOGIN_TOKEN_KEY = "Token";

    @Autowired
    private TokenService tokenService;
    
	@Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

		//支持跨域请求
        response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
        response.setHeader("Access-Control-Max-Age", "3600");
        response.setHeader("Access-Control-Allow-Credentials", "true");
        response.setHeader("Access-Control-Allow-Headers", "x-requested-with,request-source,Token, Origin,imgType, Content-Type, cache-control,postman-token,Cookie, Accept,authorization");
        response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));
	// 跨域时会首先发送一个OPTIONS请求,这里我们给OPTIONS请求直接返回正常状态
	if (request.getMethod().equals(RequestMethod.OPTIONS.name())) {
        	response.setStatus(HttpStatus.OK.value());
            return false;
        }
        
        IgnoreAuth annotation;
        if (handler instanceof HandlerMethod) {
            annotation = ((HandlerMethod) handler).getMethodAnnotation(IgnoreAuth.class);
        } else {
            return true;
        }

        //从header中获取token
        String token = request.getHeader(LOGIN_TOKEN_KEY);
        
        /**
         * 不需要验证权限的方法直接放过
         */
        if(annotation!=null) {
        	return true;
        }
        
        TokenEntity tokenEntity = null;
        if(StringUtils.isNotBlank(token)) {
        	tokenEntity = tokenService.getTokenEntity(token);
        }
        
        if(tokenEntity != null) {
        	request.getSession().setAttribute("userId", tokenEntity.getUserid());
        	request.getSession().setAttribute("role", tokenEntity.getRole());
        	request.getSession().setAttribute("tableName", tokenEntity.getTablename());
        	request.getSession().setAttribute("username", tokenEntity.getUsername());
        	return true;
        }
        
		PrintWriter writer = null;
		response.setCharacterEncoding("UTF-8");
		response.setContentType("application/json; charset=utf-8");
		try {
		    writer = response.getWriter();
		    writer.print(JSONObject.toJSONString(R.error(401, "请先登录")));
		} finally {
		    if(writer != null){
		        writer.close();
		    }
		}
//				throw new EIException("请先登录", 401);
		return false;
    }
}

源码获取

文章下方名片联系我即可~
大家点赞、收藏、关注、评论啦 、查看👇🏻获取联系方式👇🏻
精彩专栏推荐订阅:在下方专栏👇🏻
Java精品实战案例《500套》
微信小程序项目精品案例《500套》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1051780.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

lwIP 开发指南(中)

目录 ARP 协议ARP 协议的简介ARP 协议的工作流程(获取目标设备 MAC 地址步骤)ARP 缓存表的超时处理 APR 报文的报文结构ARP 协议层的接收与发送原理解析发送ARP 请求数据包接收ARP 应答数据包 IP 协议IP 协议的简介IP 数据报IP 数据报结构IP 数据报的分片解析IP 数据报的分片重…

微信小程序学习笔记3.0

第3章 资讯类:仿今日头条微信小程序 3.1 需求描述及交互分析 需求描述 仿今日头条微信小程序,要具有以下功能。 (1)首页新闻频道框架设计,包括底部标签导航设计、新闻检索框设计及新闻频道滑动效果设计。 (2)首页新闻内容设计,包括新闻标题、新闻图片及新闻评论设计…

深度学习笔记之优化算法(二)随机梯度下降

深度学习笔记之优化算法——随机梯度下降 引言回顾&#xff1a;梯度下降法梯度下降法在机器学习中的问题随机梯度下降随机梯度下降方法的思想随机梯度下降方法的步骤描述关于学习率 引言 本节将介绍随机梯度下降 (Stochastic Gradient Descent,SGD) \text{(Stochastic Gradien…

102.二叉树的层序遍历

目录 一、题目 二、代码 一、题目 102. 二叉树的层序遍历 - 力扣&#xff08;LeetCode&#xff09; 二、代码 主要应用到了两个队列&#xff0c;一个队列存放数据&#xff0c;一个队列存放对应所在的第几层 /*** Definition for a binary tree node.* struct TreeNode {* …

机器学习笔记 - 基于强化学习的贪吃蛇玩游戏

一、关于深度强化学习 如果不了解深度强化学习的一般流程的可以考虑看一下下面的链接。因为这里的示例因为在PyTorch 之上实现深度强化学习算法。 机器学习笔记 - Deep Q-Learning算法概览深度Q学习是一种强化学习算法,它使用深度神经网络来逼近Q函数,用于确定在给定状态下采…

[watevrCTF-2019]Cookie Store

很简单一道 提示了很多在cookie中 我们去看看cookie 发现是base64加密 修改大于100即可 然后买即可 。。。。。。

【ARMv8 SIMD和浮点指令编程】NEON 加载指令——如何将数据从内存搬到寄存器(其它指令)?

除了基础的 LDx 指令,还有 LDP、LDR 这些指令,我们也需要关注。 1 LDNP (SIMD&FP) 加载 SIMD&FP 寄存器对,带有非临时提示。该指令从内存加载一对 SIMD&FP 寄存器,向内存系统发出访问是非临时的提示。用于加载的地址是根据基址寄存器值和可选的立即偏移量计算…

建筑能源管理(2)——建筑能源的类型及统计计算方法

1、能源类型 能源也称能量资源或能源资源&#xff0c;是为人类的生产和生活提供各种能力和动力的物质资源&#xff0c;是国民经济的重要物质基础&#xff0c;也是未来国家命运的基础。能源的开发和有效利用程度以及人均消费量是生产技术和生活水平的重要标志。 2018年10月26日…

无线WIFI工业路由器可用于楼宇自动化

钡铼4G工业路由器支持BACnet MS/TP协议。BACnet MS/TP协议是一种用于工业自动化的开放式通信协议&#xff0c;被广泛应用于楼宇自动化、照明控制、能源管理等领域。通过钡铼4G工业路由器的支持&#xff0c;可以使设备间实现高速、可靠的数据传输&#xff0c;提高自动化水平。 钡…

Learning Invariant Representation for Unsupervised Image Restoration

Learning Invariant Representation for Unsupervised Image Restoration (Paper reading) Wenchao Du, Sichuan University, CVPR20, Cited:63, Code, Paper 1. 前言 近年来&#xff0c;跨域传输被应用于无监督图像恢复任务中。但是&#xff0c;直接应用已有的框架&#xf…

Android 性能优化—— 启动优化提升60%

应用启动速度 一个应用App的启动速度能够影响用户的首次体验&#xff0c;启动速度较慢(感官上)的应用可能导致用户再次开启App的意图下降&#xff0c;或者卸载放弃该应用程序 本文将从两个方向优化应用的启动速度 : 1.视觉体验优化 2.代码逻辑优化 视觉优化 应用程序启动有…

Spring Framework 学习笔记4:AOP

Spring Framework 学习笔记4&#xff1a;AOP 1.概念 AOP&#xff08;Aspect Oriented Programming&#xff0c;面向切面编程&#xff09;是一种编程思想。它要解决的问题是&#xff1a;如何在不改变代码的情况下增强代码的功能。 AOP 有一些核心概念&#xff1a; 连接点&am…

OpenGL之光照贴图

我们需要拓展之前的系统&#xff0c;引入漫反射和镜面光贴图(Map)。这允许我们对物体的漫反射分量和镜面光分量有着更精确的控制。 漫反射贴图 我们希望通过某种方式对物体的每个片段单独设置漫反射颜色。我们仅仅是对同样的原理使用了不同的名字&#xff1a;其实都是使用一张…

5.图形的连续绘制

到目前为止我们已经学习了折线&#xff0c;圆弧&#xff0c;矩形的基本绘制&#xff0c;但是我们每次都是单独绘制并且只绘制一个图形的。 不知道大家有没有试过在一个画布上绘制多个图形&#xff0c;例如我现在要画一个矩形&#xff0c;一个圆形和一段折线&#xff0c;代码如下…

03. 人工智能核心基础 - 导论(2)

文章目录 从方法论上来讲从问题范式上来讲从研究对象来讲 Hi&#xff0c;你好。我是茶桁。 上一章中&#xff0c;我们谈论了人工智能在时间维度上的不同时间不同的侧重点&#xff0c;这只是一个片面的方面。当然除此之外&#xff0c;我们还要从其他方向来认识人工智能&#xf…

解决大模型行业落地三大挑战,华为云GaussDB向量数据库正式发布

随着AI大模型产品及应用呈现爆发式增长,新的AI时代已经到来。向量数据库可与大语言模型配合使用,解决大模型落地过程中的痛点,已成为企业数据处理和应用大模型的必选项。在近日举行的华为全联接大会2023期间,华为云正式发布GaussDB向量数据库。GaussDB向量数据库基于GaussD…

python:bottle + eel 模仿 mdict 查英汉词典

Eel 是一个轻量的 Python 库&#xff0c;用于制作简单的类似于离线 HTML/JS GUI 应用程序&#xff0c;并具有对 Python 功能和库的完全访问权限。 Eel 托管一个本地 Web 服务器&#xff0c;允许您使用 Python 注释函数&#xff08;annotate functions&#xff09;&#xff0c;…

IDLE、Anaconda安装与使用

博主&#xff1a;命运之光 专栏&#xff1a;Python程序设计​​​​​ 目录 Python下载和安装 Anaconda安装和使用 Python程序运行方式 Python下载和安装 常用集成开发环境 IDE 默认编程环境&#xff1a; IDLE---初学者&#xff08; Download Python | Python.org &#x…

自动群发节日祝福,1 行 Python 代码搞定,小白可用

想了解更多精彩内容&#xff0c;快来关注程序员晚枫 大家节日快乐&#xff0c;这里是程序员晚枫&#xff0c;小红薯也叫这个名字。 今天给大家分享一个实用功能&#xff1a;自动群发祝福消息。 我相信社会人都体会过&#xff0c;过年过节给别人群发祝福消息的无奈&#xff0…

前沿研究|16s+宏基因组binning揭示大型藻类附生微生物群落核心组成

发表期刊&#xff1a;Microbiome 发表时间&#xff1a;2023 影响因子&#xff1a;15.5 DOI: 10.1186/s40168-023-01559-1 研究背景 大型藻类附生微生物群落是新型酶类和化合物的丰富资源&#xff0c;在维持沿海系统的高生物生产力和生物多样性方面发挥着重要的作用。但迄今…