栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > asp

asp.net5中用户认证与授权(2)

asp 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

asp.net5中用户认证与授权(2)

上篇文章给大家介绍了asp.net5中用户认证与授权(1),基础建立好了,紧接着就要创建对基础类进行操作的类,也就是实现基础类的增删改查当然,为了使用asp.net5的认证机制,这些都是通过特定的接口来实现的。

比如,对于角色来说,角色管理要实现的接口如下:

   public interface IQueryableRoleStore : IRoleStore, IDisposable where TRole : class
   {
     IQueryable Roles { get; }
   }
   public interface IRoleStore : IDisposable where TRole : class
   {
     Task CreateAsync(TRole role, CancellationToken cancellationToken);
     Task DeleteAsync(TRole role, CancellationToken cancellationToken);
     Task FindByIdAsync(string roleId, CancellationToken cancellationToken);
     Task FindByNameAsync(string normalizedRoleName, CancellationToken cancellationToken);
     Task GetNormalizedRoleNameAsync(TRole role, CancellationToken cancellationToken);
     Task GetRoleIdAsync(TRole role, CancellationToken cancellationToken);
     Task GetRoleNameAsync(TRole role, CancellationToken cancellationToken);
     Task SetNormalizedRoleNameAsync(TRole role, string normalizedName, CancellationToken cancellationToken);
     Task SetRoleNameAsync(TRole role, string roleName, CancellationToken cancellationToken);
    Task UpdateAsync(TRole role, CancellationToken cancellationToken);
   }

其实,也没什么复杂,一个是获得所有预定义角色的列表,另一个是关于角色的增删改查而已,代码如下:

 public class HDRoleStore : IQueryableRoleStore
      where TRole : HDRole, new()
    {
      /// 
      /// 存储所有预定义的角色
      /// 
      private readonly Dictionary _roles = new Dictionary();
      /// 
     /// 所有角色
     /// 
     public IQueryable Roles
     {
get
{
  if (_roles.Count == )
  {
    TRole role = new TRole();
    role.Id = "admin";
    role.Name = "管理员";
    _roles.Add(role.Id, role);
    role = new TRole();
    role.Id = "user";
    role.Name = "用户";
    _roles.Add(role.Id, role);
    role = new TRole();
    role.Id = "power";
    role.Name = "大虾";
    _roles.Add(role.Id, role);
  }
  return _roles.Values.AsQueryable();
}
     }
     public Task CreateAsync(TRole role, CancellationToken cancellationToken)
     {
_roles[role.Id] = role;
return Task.FromResult(IdentityResult.Success);
     }
     public Task DeleteAsync(TRole role, CancellationToken cancellationToken)
     {
if (role == null || !_roles.ContainsKey(role.Id))
{
  throw new InvalidOperationException("Unknown role");
}
_roles.Remove(role.Id);
return Task.FromResult(IdentityResult.Success);
     }
     public void Dispose()
     {
     }
     public Task FindByIdAsync(string roleId, CancellationToken cancellationToken)
     {
if (_roles.ContainsKey(roleId))
{
  return Task.FromResult(_roles[roleId]);
}
return Task.FromResult(null);
     }
     public Task FindByNameAsync(string normalizedRoleName, CancellationToken cancellationToken)
     {
return
   Task.FromResult(
     Roles.SingleOrDefault(r => String.Equals(r.Name, normalizedRoleName, StringComparison.OrdinalIgnoreCase)));
     }
     public Task GetNormalizedRoleNameAsync(TRole role, CancellationToken cancellationToken)
     {
return Task.FromResult(role.Name);
     }
     public Task GetRoleIdAsync(TRole role, CancellationToken cancellationToken)
     {
return Task.FromResult(role.Id);
     }
     public Task GetRoleNameAsync(TRole role, CancellationToken cancellationToken)
     {
return Task.FromResult(role.Name);
     }
     public Task SetNormalizedRoleNameAsync(TRole role, string normalizedName, CancellationToken cancellationToken)
     {
role.Name = normalizedName;
return Task.FromResult();
     }
     public Task SetRoleNameAsync(TRole role, string roleName, CancellationToken cancellationToken)
     {
role.Name = roleName;
return Task.FromResult();
     }
     public Task UpdateAsync(TRole role, CancellationToken cancellationToken)
     {
_roles[role.Id] = role;
return Task.FromResult(IdentityResult.Success);
     }
   }

可以看到,在第12行,我们的方法里直接写死了角色列表,如果相结合具体的项目的话,我相信叶良辰有一百种方法从各种数据库、配置文件等取得角色列表,而其他程序代码却基本不用更改。

当然,asp.net5自带的默认实现实现了很多其他接口,这里为了最简单起见,只实现了最基本的。

以上就是给大家介绍的asp.net5中用户认证与授权(2),希望大家喜欢。后续还会持续更新,请大家持续关注本站。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/56644.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号