zoukankan      html  css  js  c++  java
  • 权限控制:分配权限1

    在介绍分配方法之前,我们必须理解权限关系,这里面涉及到三个对象:用户,角色,权限,权限分配到角色,角色再分配到用户,当某个用户属于某个角色后,这个用户就具有了角色所包含的权限列表,比如现在有一个信息管理员角色,这个角色包含了信息删除权限,当张三这个用户具有信息管理员角色后,张三就具备了信息删除的权限。在某些特殊场景下,权限也可以直接分配到用户,也就是说可以直接把某些特定的权限,绕过角色,直接分配给用户。Microsoft.AspNetCore.Identity.EntityFrameworkCore框架中都提供了这样的支持。

    先把框架中主要的业务对象类介绍一下:

    IdentityUser:表示一个用户信息

    IdentityRole:表示一个角色信息

    IdentityRoleClaim<TKey>:表示角色具有的权限

    IdentityUserClaim<TKey>:表示用户具有的权限

    IdentityUserRole<TKey>:表示用户角色关系

    基本概念理解后,下面我们就来看一下如何进行权限分配。

    1,分配权限到角色:Microsoft.AspNetCore.Identity.EntityFrameworkCore中提供了RoleManager类,类中提供了把权限分配到角色的方法:

      Task<IdentityResult> AddClaimAsync(TRole role, Claim claim)

      第一个参数表示对应的角色对象,第二个参数表示一个权限信息

    2,分配权限到用户:Microsoft.AspNetCore.Identity.EntityFrameworkCore中提供了UserManager类,类中提供了把权限分配到用户的方法:

      Task<IdentityResult> AddClaimAsync(TUser user, Claim claim)

      第一个参数表示对应的用户对象,第二个参数表示一个权限信息

    3,分配用户到角色:用到的同样是UserManager类,使用的方法:

      AddToRoleAsync(TUser user, string role)

      第一个参数表示的是用户对象,第二个是角色的名称

    4,获取角色当前具有的权限列表:

     Task<IList<Claim>> RoleManager.GetClaimsAsync(TRole role)

    5,获取用户当前具有的权限列表:

     Task<IList<Claim>> UserManager.GetClaimsAsync(TUser user)

  • 相关阅读:
    git学习笔记
    angular自定义指令-1
    转 三范式
    CentOS 7 安装NVIDIA驱动实现修改分辨率和扩屏功能
    acm 2034
    acm 2031
    记票统计
    acm 2020 map 逆向输出
    acm 2014
    将输入的字符一个一个读入
  • 原文地址:https://www.cnblogs.com/dog12345/p/6962083.html
Copyright © 2011-2022 走看看