• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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中的用户认证与授权(1)
    下一篇:ASP.NET的实用技巧详细介绍
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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