互联网前后端分离的开发场景,一般会员和数据权限的判断是放在前端还是后端?

server/2024/10/20 4:02:49/
  • 推荐学习文档
    • golang应用级os框架,欢迎star
    • golang应用级os框架使用案例,欢迎star
    • 案例:基于golang开发的一款超有个性的旅游计划app经历
    • golang实战大纲
    • golang优秀开发常用开源库汇总
    • 想学习更多golang知识,这里有免费的golang学习笔记专栏

文章目录

    • 从安全性角度
      • 防止数据篡改
      • 数据一致性
    • 从业务逻辑完整性角度
      • 复杂业务规则
      • 数据源的唯一信赖

在互联网前后端分离的开发场景中,一般将会员和数据权限的判断放在后端

从安全性角度

防止数据篡改

  • 前端:如果将会员和数据权限判断放在前端,恶意用户可以通过浏览器开发者工具等手段轻易修改前端代码或者拦截请求并篡改数据,从而绕过前端的权限判断逻辑。例如,用户可能将表示自己权限级别的字段从 “普通会员” 修改为 “高级会员”,试图获取高级会员才能访问的数据。
  • 后端后端是数据的最终处理者,在后端进行权限判断可以直接依据可靠的数据源(如数据库中的用户权限记录)进行校验。后端收到请求后,根据用户的登录状态(如从会话或令牌中获取用户身份信息)查询数据库中该用户的权限设置,然后判断该用户是否有权执行请求的操作。这样可以确保即使前端被恶意篡改,也无法突破后端的权限控制,从而保障数据安全。

数据一致性

  • 前端前端的权限判断依赖于从后端获取的初始数据,如果前端本地数据被篡改或者与后端数据不同步(例如由于网络问题导致前端缓存的权限数据过期但未更新),就会导致权限判断不准确。
  • 后端后端始终以数据库中的权威数据为准进行权限判断,能够保证数据的一致性。无论前端的状态如何,后端都能根据最新、最准确的权限设置来决定是否允许操作,避免因前端数据不一致而产生的安全漏洞。

从业务逻辑完整性角度

复杂业务规则

  • 前端前端的主要任务是展示数据和接收用户交互,如果将复杂的会员和数据权限判断放在前端,会使前端代码变得臃肿和难以维护。例如,一个涉及多个角色(如会员、管理员、超级管理员)、多种数据类型(如个人信息、财务数据、机密文档)且具有不同权限层次(如只读、读写、删除等权限)的业务场景,前端难以完整地处理所有的业务逻辑。
  • 后端后端可以更好地处理复杂的业务逻辑。它可以通过模块化的设计,清晰地定义不同角色对不同数据资源的权限规则。例如,在一个电商系统中,后端可以方便地定义普通会员只能查看自己的订单,而管理员可以查看和修改所有订单的逻辑。这种在后端集中处理业务逻辑的方式,使得系统的业务逻辑更加清晰、易于维护和扩展。

数据源的唯一信赖

  • 前端前端本身不应该是权限判断的最终依据,因为它无法直接获取所有可能影响权限判断的信息。例如,在一个多系统集成的场景中,用户在一个外部系统中的某些操作可能会影响其在本系统中的权限,但前端无法及时知晓这些外部系统的状态变化。
  • 后端后端可以整合来自多个数据源(如不同数据库、外部服务接口等)的信息来进行全面的权限判断。它能够及时获取到系统内外部的各种信息变化,从而准确地根据最新情况判断会员的权限,确保业务逻辑的完整性。

希望本文对你有所帮助!如果你有任何问题或建议,欢迎在评论区留言。

关注我看更多有意思的文章哦!👉👉


http://www.ppmy.cn/server/126439.html

相关文章

UE5 项目缓存文件删除、版本控制说明(工程目录结构)

文章目录 前言一、项目文件示例二、缓存文件删除、版本控制说明前言 我们在拷贝项目或者使用 Git 进行版本控制,如果不对文件选择性的控制,大量缓存文件会导致传输速度变慢;或者我们的项目报错了,想要删除缓存文件又不知如何下手,哪些是可删除的,哪些又是不可删除的,本…

自定义 Git

我们可以对 Git 做一些配置。 ‍ 配置别名 有没有经常敲错命令?比如 git status​?status ​这个单词真心不好记。 如果敲 git st ​就表示 git status ​那就简单多了,当然这种偷懒的办法我们是极力赞成的。 我们只需要敲一行命令&…

FOC电机驱动开发踩坑记录

关键技术 SVPWM电机磁场控制电流采样park变换和Clark变换滑膜观测器(无感FOC) SVPWM电机磁场控制 SVPWM主要思想是通过精确的对UVW三相电流的分时控制,来控制转子的合成力矩,达到目标方向,常用的是6分区的设计&…

行为设计模式 -策略设计模式- JAVA

策略设计模式 一 .简介二. 案例2.1 抽象策略(Strategy)类2.2 具体策略(Concrete Strategy)类2.3 环境(Context)类2.4 测试 三. 结论3.1 优缺点3.2 使用场景 前言 这是我在这个网站整理的笔记,有错误的地方请…

关于鸿蒙next 调用系统权限麦克风

使用app的时候都清楚,想使用麦克风、摄像头,存储照片等,都需要调用系统的权限,没有手机操作系统权限你也使用不了app所提供的功能,虽然app可以正常打开,但是你需要的功能是没办法使用的。今天把自己在鸿蒙学…

51单片机的光照强度检测【proteus仿真+程序+报告+原理图+演示视频】

1、主要功能 该系统由AT89C51/STC89C52单片机LCD1602显示模块光照传感器按键蜂鸣器LED等模块构成。适用于光照强度检测、光照强度测量报警等相似项目。 可实现功能: 1、LCD1602实时显示光照强度信息 2、光照强度传感器(电位器模拟)采集光照信息 3、可…

Docker Init 实战详解:从入门到精通

1. 引言 在容器化应用开发的世界里,Docker 一直是首选工具。然而,对于初学者来说,创建 Dockerfile 和设置 Docker 环境可能是一个挑战。为了简化这个过程,Docker 引入了 docker init 命令。本文将深入探讨 Docker Init 的方方面面,从其诞生背景到高级应用,为您提供全面的…

玩转springboot之springboot定制化tomcat

定制化tomcat springboot中是集成了tomcat容器的,如何定制化内置的tomcat呢?springboot提供了定制化的接口 1.5.x版本 在1.5.x版本中使用的是EmbeddedServletContainerCustomizer接口来进行定制化的 public class MyTomcatCustomizer implements Embedde…