iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > VUE >在Angular项目中如何实现权限控制
  • 622
分享到

在Angular项目中如何实现权限控制

2024-04-02 19:04:59 622人浏览 安东尼
摘要

这篇文章主要介绍“在angular项目中如何实现权限控制”,在日常操作中,相信很多人在在Angular项目中如何实现权限控制问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”在A

这篇文章主要介绍“在angular项目中如何实现权限控制”,在日常操作中,相信很多人在在Angular项目中如何实现权限控制问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”在Angular项目中如何实现权限控制”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

在Angular项目中如何实现权限控制

菜单路由控制

在Angular项目中如何实现权限控制

系统开发的时候,会有很多的菜单,这个时候,就需要后端判断用户的角色,按照用户的权限返回不同的菜单路由。

返回的数据格式需要我们按照自己在 app-routing.module.ts 中编写好的路由路径对应。

比如,我们有路由文件如下:

// app-routing.module.ts

const routes: Routes = [
  {
    path: 'user-manage',
    component: AuthLayoutComponent, // 通过鉴权的组件
    children: [
      {
        path: '',
        redirectTo: 'user',
        pathMatch: 'full'
      },
      {
        path: 'user', // 用户列表
        component: UserComponent
      },
      {
        path: 'user/detail/:uuid', // 用户详情,类似这种不会出现在菜单里面
        component: UserDetailComponent
      },
      {
        path: 'department', // 部门列表
        component: DepartmentComponent
      }
    ]
  },
  // ...
]

在页面中,我们的菜单展示的数据是这样子的:

<!-- demo.component.html -->

<ul nz-menu nzMode="inline" [nzInlineCollapsed]="isCollapsed">
  <li *ngFor="let submenu of menu_data" nz-submenu [nzTitle]="isCollapsed ? '' : submenu.title" [nzIcon]="submenu.icon"
    [nzOpen]="submenu.is_open" (nzOpenChange)="selectMenu(submenu)">
    <ul>
      <li *ngFor="let child of submenu?.children" nz-menu-item nzMatchRouter>
        <a [routerLink]="['/' + child.url]">{{ child.title }}</a>
      </li>
    </ul>
  </li>
</ul>

定义了一个二级的菜单,拥有下面几个字段:

  • title 字段 - 菜单的标题

  • url 字段 - 菜单的路由,对应 app-routing.module.ts 中的完整的 path

  • icon 字段 - 标题前的小图标,二级标题没有

  • is_open 字段 - 菜单是否展开的标识

此时,后端的菜单接口,应该返回类似下面的数据:

// demo.component.ts

public menu_data:any = [
  {
    title: "成员管理",
    url: "user-manage",
    icon: "user-switch", // 这里是用了 angular ant design 的图标
    is_open: false,
    children: [
      {
        title: "用户",
        url: "user-manage/user",
        icon: undefined,
        is_open: false
      },
      {
        title: "部门",
        url: "user-manage/department",
        icon: undefined,
        is_open: false
      }
    ]
  },
  // ...
]

也许你会有疑问?️:二级标题中都用不上 iconis_open 这两个字段,为啥还要写?

嗯~,读者可以对后端返回提要求,但是为了保持数据的可读性和易操作,还是保留为好...

用户行为控制

用户的行为控制,这个的就很细粒度的行为了。小到控制用户的一个按钮的展示等,但是本质来说,都是对后端接口请求的限制?。比如,你请求一个列表,但是你没有权限,那么你就请求不了,报 401 的错误。

在Angular项目中如何实现权限控制

我们可以按照需求,针对用户的不同角色,限定用户不能查看或者其他操作。但是,这样很不合理,用户可以通过 postman工具发起请求,而不通过系统。所以,我们得--

在后端做一层限制

我们获取到后端返回的接口权限,比如接收到下面这些数据:

{
  code: 0,
  msg: 'ok',
  results: {
    getUserList: {
     url: '/api/get/user/list', // 当然,可以按照前后端规定返回,不一定是真实的 url ...
     enable: true
    },
    editUser: {
      url: '/api/edit/:uuid',
      enable: false
    }
  }
}

我们得到数据之后,跟前端保存的内容做比对,再按照条件控制,接口需要做对应的限制访问,而不是单纯前端判断。

<!-- demo.component.html -->

<button *ngIf="userObj.editUser.enable">Edit</button>

单纯前端判断:1. 不好维护 2. 不安全,用户可以跨过浏览器请求

到此,关于“在Angular项目中如何实现权限控制”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: 在Angular项目中如何实现权限控制

本文链接: https://www.lsjlt.com/news/97562.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作