当前位置: 首页 > news >正文

asp网站制作设计教程招聘网站怎么做线下活动

asp网站制作设计教程,招聘网站怎么做线下活动,wordpress自定义导航,网站开发工具中的三剑客前言在前面我讲过基于token的权限认证#xff0c;然后前几天有小伙伴私信我#xff0c;怎么做一个身份认证也就是授权。在Asp.net Core常见的授权方式有:基于角色的授权#xff0c;有基于声明的授权#xff0c;有基于策略的授权#xff0c; 这三种授权我就不做过多介绍了,… 前言在前面我讲过基于token的权限认证然后前几天有小伙伴私信我怎么做一个身份认证也就是授权。在Asp.net Core常见的授权方式有:基于角色的授权有基于声明的授权有基于策略的授权 这三种授权我就不做过多介绍了,大家可以去查阅官网 https://docs.microsoft.com/en-us/aspnet/core/security/authorization/claims?viewaspnetcore-6.0自定义授权今天给大家带来的是自定义授权那大家需要了解一下什么是授权授权就是确定用户身份的过程其本质就是拥有某些特性的用户会有权限访问某个资源或执行某个操作那根据这个原理我们可以就可以开始设计了我们在设计前我们要明白我们所做的系统 都有什么角色比如我们现在设计一个基于管理员和普通用户的授权。我们首先肯定要定义一个权限策略public class PermissionRequirement : IAuthorizationRequirement{public string _permissionName { get; }public PermissionRequirement(string PermissionName){_permissionName  PermissionName;}}然后我们将 自定义要求添加到策略在startup类中添加。此外还需要在 IAuthorizationHandler 类型的范围内向 DI 系统注册新的处理程序public void ConfigureServices(IServiceCollection services){services.AddControllers(o {//  o.Filters.AddApiAuthorize();o.Filters.AddMyAuthentication();});services.AddAuthentication();//基于自定义策略授权services.AddAuthorization(options {options.AddPolicy(Admin,policy  policy.Requirements.Add(new PermissionRequirement(Admin)));options.AddPolicy(Client,policy  policy.Requirements.Add(new PermissionRequirement(Client)));});services.AddHttpContextAccessor();services.AddScopedIAuthorizationHandler, PermissionRequirementHandler();}我们注册好了之后肯定要把自定义策略用在控制器上 比如说这个 我们只允许管理员访问。[HttpGet(GetUserInformation)][Authorize(Policy  Admin)]public IActionResult GetUserInformation(){return Ok(new { Name123,Age18,Sex性别});}那么问题来了 我们怎么去处理这些策略啦在Asp.net Core中已经帮我们内置了授权处理的基类AuthorizationHandler只需要继承他即可 在Asp.net Core中的授权处理基类是获取不到我们的HTTPContext所以我们需要借助注入IHttpContextAccessor拿到我们的HTTPContext的上下文然后在我们的StartUp类里面  注入即可services.AddHttpContextAccessor();那我们再看授权处理类public class PermissionRequirementHandler : AuthorizationHandlerPermissionRequirement{private readonly IHttpContextAccessor _httpContextAccessor;public PermissionRequirementHandler(IHttpContextAccessor httpContextAccessor){_httpContextAccessor  httpContextAccessor;}protected async override  Task HandleRequirementAsync(AuthorizationHandlerContext context, PermissionRequirement requirement){HttpContext httpContext  _httpContextAccessor.HttpContext;}那根据我们定义的PermissionRequirement权限策略可以获取到调用的方法具有什么策略。那我们怎么获取当前用户具有那些角色呢所以我们需要改造一下我们获取token的接口 我们在获取Token的时候把token值写入缓存时我们把缓存当作我们的key值用户信息当成Value值 我们定义一个用户信息Model我这里偷懒了 只需要用户的Code和subpublic class TokenModel{public string UserCode { get; set; }public string Sub { get; set; }}[HttpGet(GetToken)][MyNoAuthentication]public IActionResult GetToken(string UserCode){string token  AESEncrypt.Encrypt(UserCode);TokenModel tokenModel  new TokenModel();tokenModel.UserCode  UserCode;tokenModel.Sub  UserCode1?Admin:Client;MemoryCacheHelper.AddMemoryCache(token, tokenModel);return Ok(token);}然后再获取Token的时候将值写入到缓存中最后就像我们判断用户token有效没有来判断用户是否具有权限访问public class PermissionRequirementHandler : AuthorizationHandlerPermissionRequirement{private readonly IHttpContextAccessor _httpContextAccessor;public PermissionRequirementHandler(IHttpContextAccessor httpContextAccessor){_httpContextAccessor  httpContextAccessor;}protected async override  Task HandleRequirementAsync(AuthorizationHandlerContext context, PermissionRequirement requirement){HttpContext httpContext  _httpContextAccessor.HttpContext;var authorize  httpContext.Request.Headers[MyAuthentication];if (string.IsNullOrEmpty(authorize)){await httpContext.Response.WriteAsync(请求参数不能为空);context.Fail();}if (!MemoryCacheHelper.Exists(authorize)){await httpContext.Response.WriteAsync(无效的授权信息或者授权信息已过期); context.Fail();}TokenModel tokenModel (TokenModel)MemoryCacheHelper.Get(authorize);if (tokenModel.Sub  requirement._permissionName){context.Succeed(requirement);}else {await httpContext.Response.WriteAsync(服务端拒绝访问当前身份没有权限访问,请联系管理员开放权限);context.Fail();}}}测试我们测试一下普通用户管理员
http://www.zqtcl.cn/news/235757/

相关文章:

  • 怎么做电脑网站后台杭州网站制作公司排名
  • 济南手机网站定制价格wordpress前端登陆 投稿
  • 建设企业网站的原因网站开发项目经验和教训
  • 京东网站的建设与发展现状分析手机与pc网站同步模板
  • 枣阳网站建设吧yw最新域名备案查询
  • 西安知名网站建设公司什么网站可以分享wordpress
  • ugc网站开发2022恢复线下教学通知
  • 网站界面尺寸珠海网站建设制作哪家专业
  • 上海闸北城市建设有限公司网站想学设计没有基础怎么办
  • 免费微网站哪个好用在线网页代理浏览免费
  • 广州建设专业网站寻找做项目的网站
  • 湛江网站建设方案服务卖wordpress主题
  • 扬州做网站的网络公司wordpress设置登录背景图片
  • 有哪些好的网站建设移动网站建设解决方案
  • 江苏网站建设公司排名高校门户网站建设问题
  • 网站怎么加关键词视频网站程序
  • 建设网站需要的人员及资金建设一个网站的具体流程
  • 北京长空建设有限公司网站网站开发制作培训学校
  • 哪些网站可以免费做推广呢o2o营销模式
  • 注册网站的流程南京今天的最新消息
  • 做网站的没有进项票怎么办张家口市一建公司官网
  • 建设网站的本质智慧团建手机版
  • 嘉兴网站建设有前途吗沈阳男科医院排名10强名单公布
  • 手机网站变灰17种新型商业模式
  • 图书网站开发需求文档模板做网站现在用什么语言
  • 创建网站主题在哪里接单赚钱平台
  • 企业做网站的流程权威发布新闻的含义
  • 国外大型购物网站桂林视频网站制作
  • 平度那里有做网站的网站设计技术入股
  • 张家港专业做网站网站设计与建设ppt