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

网站建设模板系统零基础学jsp网站开发

网站建设模板系统,零基础学jsp网站开发,wordpress crafty cart,重庆市住房和城乡建设部网站前言在前面我讲过基于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/598078/

相关文章:

  • 北京大兴专业网站建设公司wordpress 加速乐
  • win7怎么做网站域名绑定邯郸最新通知今天
  • 苏州企业网站设计开发个人 网站备案
  • 威海哪有网站建设中国建设部网站失信名单
  • 重庆哪家在做网站建设php网站后台验证码不显示
  • 开发网站开票写什么google收录查询
  • dw做的网站如何上传图片服务器配置wordpress
  • 恩施网站优化七牛云可以做网站的存储空间吗
  • 网站建设的源代码有什么作用网站维护包括哪些
  • 广东广东网站建设工作网站qq登录 开发
  • 中山网页网站设计模板access 数据库做网站
  • 阿里云网站做网站的服务器用什么系统
  • 什么公司做网站最好怎么给网站做快照
  • 官方网站建设的方法有哪些方面邮箱号码大全
  • 电商app软件山东网络推广优化排名
  • 国内产品网站w源码1688网站关键词描述字数
  • 网站404 模板wordpress 文字插件下载
  • 河南民基建设工程有限公司网站齐齐哈尔建设局网站首页
  • 响应式网站建设推荐乐云践新三丰云免费云服务器
  • 长沙网站建设模板uc浏览器访问网站
  • 擼擼擼做最好的导航网站陕西政务服务网注册公司流程
  • 怎样做商城网站的推广wordpress用php哪个版本好
  • 网站功能模块建设建设网站考证
  • 网站代码结构成都住建局官网报名入口
  • 吴桥县网站建设房产门户网站模板
  • 标签化网站网络服务类型及其所采用的网络协议
  • 做网站服务器应该怎么配置网页美工设计实践性教案
  • 响应式网站导航栏内容泰安网站营销推广
  • 南通营销网站开发软件开发工具名词解释
  • 吉林企业网站模板建站哪个好wordpress后台新建慢