主页 > 知识库 > asp.net5中用户认证与授权(2)

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

热门标签:阿里云 硅谷的囚徒呼叫中心 网站排名优化 集中运营管理办法 地方门户网站 服务器配置 百度竞价排名 科大讯飞语音识别系统

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

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

   public interface IQueryableRoleStoreTRole> : IRoleStoreTRole>, IDisposable where TRole : class
   {
     IQueryableTRole> Roles { get; }
   }
   public interface IRoleStoreTRole> : IDisposable where TRole : class
   {
     TaskIdentityResult> CreateAsync(TRole role, CancellationToken cancellationToken);
     TaskIdentityResult> DeleteAsync(TRole role, CancellationToken cancellationToken);
     TaskTRole> FindByIdAsync(string roleId, CancellationToken cancellationToken);
     TaskTRole> FindByNameAsync(string normalizedRoleName, CancellationToken cancellationToken);
     Taskstring> GetNormalizedRoleNameAsync(TRole role, CancellationToken cancellationToken);
     Taskstring> GetRoleIdAsync(TRole role, CancellationToken cancellationToken);
     Taskstring> GetRoleNameAsync(TRole role, CancellationToken cancellationToken);
     Task SetNormalizedRoleNameAsync(TRole role, string normalizedName, CancellationToken cancellationToken);
     Task SetRoleNameAsync(TRole role, string roleName, CancellationToken cancellationToken);
    TaskIdentityResult> UpdateAsync(TRole role, CancellationToken cancellationToken);
   }

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

 public class HDRoleStoreTRole> : IQueryableRoleStoreTRole>
      where TRole : HDRole, new()
    {
      /// summary>
      /// 存储所有预定义的角色
      /// /summary>
      private readonly Dictionarystring, TRole> _roles = new Dictionarystring, TRole>();
      /// summary>
     /// 所有角色
     /// /summary>
     public IQueryableTRole> 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 TaskIdentityResult> CreateAsync(TRole role, CancellationToken cancellationToken)
     {
       _roles[role.Id] = role;
       return Task.FromResult(IdentityResult.Success);
     }
     public TaskIdentityResult> 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 TaskTRole> FindByIdAsync(string roleId, CancellationToken cancellationToken)
     {
       if (_roles.ContainsKey(roleId))
       {
         return Task.FromResult(_roles[roleId]);
       }
       return Task.FromResultTRole>(null);
     }
     public TaskTRole> FindByNameAsync(string normalizedRoleName, CancellationToken cancellationToken)
     {
       return
          Task.FromResult(
            Roles.SingleOrDefault(r => String.Equals(r.Name, normalizedRoleName, StringComparison.OrdinalIgnoreCase)));
     }
     public Taskstring> GetNormalizedRoleNameAsync(TRole role, CancellationToken cancellationToken)
     {
       return Task.FromResult(role.Name);
     }
     public Taskstring> GetRoleIdAsync(TRole role, CancellationToken cancellationToken)
     {
       return Task.FromResult(role.Id);
     }
     public Taskstring> 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 TaskIdentityResult> UpdateAsync(TRole role, CancellationToken cancellationToken)
     {
       _roles[role.Id] = role;
       return Task.FromResult(IdentityResult.Success);
     }
   }

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

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

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

您可能感兴趣的文章:
  • asp.net5中的用户认证与授权(1)
  • 解读ASP.NET 5 & MVC6系列教程(1):ASP.NET 5简介
  • 解读ASP.NET 5 & MVC6系列教程(2):初识项目
  • 解读ASP.NET 5 & MVC6系列教程(3):项目发布与部署
  • 解读ASP.NET 5 & MVC6系列教程(4):核心技术与环境配置
  • 解读ASP.NET 5 & MVC6系列教程(5):Configuration配置信息管理
  • 解读ASP.NET 5 & MVC6系列教程(6):Middleware详解
  • 解读ASP.NET 5 & MVC6系列教程(7):依赖注入

标签:威海 西双版纳 开封 随州 梧州 乌兰察布 甘孜 广西

巨人网络通讯声明:本文标题《asp.net5中用户认证与授权(2)》,本文关键词  ;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 收缩
    • 微信客服
    • 微信二维码
    • 电话咨询

    • 400-1100-266