当前位置: 首页 > 网络应用技术

背景系统的权限控制和管理

时间:2023-03-08 18:27:59 网络应用技术

  前端权威与后端权威之间的区别在哪里?为什么后端权威将前端权威与后端授权具有什么?您需要在前端给出什么权限?本文重点是在这三个问题上,解释了前端权威控制思想和VUE的实现。

  后端权限本质上只是视图层的显示。授权的核心是服务器中的数据正在更改,因此后端是权限的关键。修改数据和其他操作。

  当前每个人当前广泛采用的两个权限模型是:基于角色的访问控制(RBAC)和基于属性的访问控制(ABAC)。两者有自己的优势和缺点:

  RBAC模型用于通用项目。

  前端权限前端权限的控制是控制前端视图层的显示以及前端发送的请求。

  如果可以修改服务器中数据库的数据级,则实际上足以控制后端。前端权威控制的好处主要如下:

  从登录请求中将获得来自权限的数据。前端是根据权限动态生成路由,并且仅允许用户访问权限内的路由。如果地址栏以外的路由可以重定向到页面(无论是否登录是否登录)。

  同一页面也可能显示不同的按钮,因为其权限不同。

  如果用户通过非常规操作,例如浏览器调试工具将某些禁用按钮转换为启用状态。此时发送的请求也应被前端拦截。

  用户登录后,将从后端返回一般权限信息。如何控制权限取决于如何与后端一致。查找信息并结合了个人项目体验后,我总结了以下三种常见方法。

  后端返回授权表或路由表是管理员共有的,可以添加新角色并将菜单分配给此字符。获得的数据如下:

  专注于该领域的用户信息需要在客户端上保持耐用。

  当请求需要使用的接口时,有必要将其放在请求头到后端。

  权限表可以生成前端所需的路由表(此处显示的是它也可以通过前端处理)。如果返回路由表,则没有其他处理。

  对于某些小型项目,后端可能不想返回路由表,而前端还认为在后端添加页面太麻烦了。更常见的是,后端将告诉您的角色前端用户,数据可能如下:

  该字段表示用户的角色,并且组的使用是因为用户可能具有多个角色。路由表由正面维护并根据角色动态生成。

  根据用户信息搜索的角色搜索信息,这种情况相对较小,但是我经常遇到这种情况。从后端返回的用户信息如下:

  一开始,后端告诉您通过该领域的许可来判断权限,然后您很快就写了一条方法。随着业务的变化,该产品提出了新的需求并增加了管理员。后端告诉你:

  当角色是管理员时。

  一段时间后,我会再次告诉你:

  当它是一个特殊角色时,只有导入数据的权力。

  然后,它可以编写这样的方法来判断用户的权限级别:

  尽管数据库中的表仍然是原始表,但从前端的角度来看,假设只有三个级别,等于三个角色,现在它已成为五个角色。

  全局预制的警卫确定是否登录登录页面(或其他路由白色列表中的页面)

  动态路由通常分为两种类型:不需要权限判断的路由以及需要动态判断许可的路由。以下是不需要权限判决的路由。

  动态路由处理的总体想法是:根据生成路由的权限,添加到路由表中;当用户开关和权限发生变化时,请清除添加动态的路由。

  对于后端直接返回路由表,代码可能如下:

  以上代码是指掘金 - “ VUE实现用户登录验证 +权限验证 +动态路由(左菜单栏)”

  请勿使用router.addrouter方法,因为它在VUE路由器v3.x中被放弃

  对于后端返回表的三种情况,返回返回字符信息以及根据用户信息来判断字符的前端,这会更麻烦。转换映射以生成路由后,添加了路由表以使用。

  映射转换的规则需要由正面维护。

  尖端:

  此外,尽管提到了VUE路由器3.x文档:

  使用路由路由时,请确保路由的顺序正确,也就是说,包含段落的路由应放在末尾。

  但是,在我的测量之后,发现包含匹配符号的路由不会影响匹配匹配匹配。

  最简单的想法是,但是每个按钮都有一个合乎逻辑的判断,这还不够简洁。考虑到重复使用,您可以定义自定义说明以封装逻辑并使用路由元信息的使用。

  新建在根目录中,然后将其引入中间。

  携带令牌请求可以通过请求拦截器携带,该代码如下:

  令牌的验证导航警卫只能简单地检查或不检查,无法验证其合法性。

  使用响应拦截器可以处理非法情况(超时或篡改),特定代码如下:

  不应发送拦截的请求还必须使用请求拦截器,并且修改代码如下:

  以上代码将请求类型的权限与路由中的权限进行了比较。但是,实际开发中的添加,删除和修改只能使用,或者可以用作维护此对象的值。

  前端权限控制可以改善用户体验并减少服务器的压力,但是最后保证仍然在后端。在执行权限时,总体想法是最重要的。由于业务变化,好主意可以避免更改大型代码。

  原始:https://juejin.cn/post/7101548981469052958