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)

  • 相关阅读:
    $Noip2018/Luogu5022$ 旅行
    $Noip2018/Luogu5020$ 货币系统 $dp$
    $Noip2018/Luogu5021$ 赛道修建 二分+树形
    $Noip2018/Luogu5019/Luogu1969$ 铺设道路
    $Poj1220/AcWing124 Number Base Convertion$ 进制转换+高精除
    $Poj1050 To the Max$
    $Poj1723/AcWing123 Soldiers$ 排序
    luogu质数距离
    模板线性筛
    CERC2016 bfs 最大生瓶颈边 lca
  • 原文地址:https://www.cnblogs.com/dog12345/p/6962083.html
Copyright © 2011-2022 走看看