无为清净楼资源网 Design By www.qnjia.com
上篇文章给大家介绍了asp.net5中用户认证与授权(1),基础建立好了,紧接着就要创建对基础类进行操作的类,也就是实现基础类的增删改查当然,为了使用asp.net5的认证机制,这些都是通过特定的接口来实现的。
比如,对于角色来说,角色管理要实现的接口如下:
public interface IQueryableRoleStore<TRole> : IRoleStore<TRole>, IDisposable where TRole : class { IQueryable<TRole> Roles { get; } } public interface IRoleStore<TRole> : IDisposable where TRole : class { Task<IdentityResult> CreateAsync(TRole role, CancellationToken cancellationToken); Task<IdentityResult> DeleteAsync(TRole role, CancellationToken cancellationToken); Task<TRole> FindByIdAsync(string roleId, CancellationToken cancellationToken); Task<TRole> FindByNameAsync(string normalizedRoleName, CancellationToken cancellationToken); Task<string> GetNormalizedRoleNameAsync(TRole role, CancellationToken cancellationToken); Task<string> GetRoleIdAsync(TRole role, CancellationToken cancellationToken); Task<string> GetRoleNameAsync(TRole role, CancellationToken cancellationToken); Task SetNormalizedRoleNameAsync(TRole role, string normalizedName, CancellationToken cancellationToken); Task SetRoleNameAsync(TRole role, string roleName, CancellationToken cancellationToken); Task<IdentityResult> UpdateAsync(TRole role, CancellationToken cancellationToken); }
其实,也没什么复杂,一个是获得所有预定义角色的列表,另一个是关于角色的增删改查而已,代码如下:
public class HDRoleStore<TRole> : IQueryableRoleStore<TRole> where TRole : HDRole, new() { /// <summary> /// 存储所有预定义的角色 /// </summary> private readonly Dictionary<string, TRole> _roles = new Dictionary<string, TRole>(); /// <summary> /// 所有角色 /// </summary> public IQueryable<TRole> 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<IdentityResult> CreateAsync(TRole role, CancellationToken cancellationToken) { _roles[role.Id] = role; return Task.FromResult(IdentityResult.Success); } public Task<IdentityResult> 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<TRole> FindByIdAsync(string roleId, CancellationToken cancellationToken) { if (_roles.ContainsKey(roleId)) { return Task.FromResult(_roles[roleId]); } return Task.FromResult<TRole>(null); } public Task<TRole> FindByNameAsync(string normalizedRoleName, CancellationToken cancellationToken) { return Task.FromResult( Roles.SingleOrDefault(r => String.Equals(r.Name, normalizedRoleName, StringComparison.OrdinalIgnoreCase))); } public Task<string> GetNormalizedRoleNameAsync(TRole role, CancellationToken cancellationToken) { return Task.FromResult(role.Name); } public Task<string> GetRoleIdAsync(TRole role, CancellationToken cancellationToken) { return Task.FromResult(role.Id); } public Task<string> 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<IdentityResult> UpdateAsync(TRole role, CancellationToken cancellationToken) { _roles[role.Id] = role; return Task.FromResult(IdentityResult.Success); } }
可以看到,在第12行,我们的方法里直接写死了角色列表,如果相结合具体的项目的话,我相信叶良辰有一百种方法从各种数据库、配置文件等取得角色列表,而其他程序代码却基本不用更改。
当然,asp.net5自带的默认实现实现了很多其他接口,这里为了最简单起见,只实现了最基本的。
以上就是给大家介绍的asp.net5中用户认证与授权(2),希望大家喜欢。后续还会持续更新,请大家持续关注本站。
无为清净楼资源网 Design By www.qnjia.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
无为清净楼资源网 Design By www.qnjia.com
暂无评论...
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
2024年11月16日
2024年11月16日
- 张敬轩2005《我的梦想我的路》几何娱乐[WAV+CUE][1G]
- 群星《人到四十男儿情(SRS+WIZOR)》[原抓WAV+CUE]
- 马久越《上善若水HQCDII》[低速原抓WAV+CUE]
- 龚玥《女儿情思》6N纯银SQCD【WAV+CUE】
- 张惠妹《你在看我吗》大碟15 金牌大风[WAV+CUE][1G]
- 群星《左耳·听见爱情》星文唱片[WAV+CUE][1G]
- 群星《抖音嗨疯-DISCO英文版》[WAV+CUE][1G]
- 群星.1990-情义无价(TP版)【中唱】【WAV+CUE】
- 马兆骏.1990-心情·七月【滚石】【WAV+CUE】
- 方伊琪.1979-沙鸥(LP版)【星岛全音】【WAV+CUE】
- 蔡琴《醇厚嗓音》6N纯银SQCD【WAV+CUE】
- 陈曦《遇见HQCD》[WAV+CUE]
- 大提琴-刘欣欣《爱的问候》HDCD[WAV+CUE]
- 周耀辉/邓慧中《从什么时候开始》[320K/MP3][95.71MB]
- 周耀辉/邓慧中《从什么时候开始》[FLAC/分轨][361.29MB]