zoukankan      html  css  js  c++  java
  • 一、模型验证CoreWebApi 管道方式(非过滤器处理)2(IApplicationBuilder扩展方法的另一种写法)

    一、 自定义中间件类的方式用一个单独类文件进行验证处理

    Configure下添加配置

                //app.AddAuthorize();
    AddAuthorize因为参数(this IApplicationBuilder applicationBuilder)来自IApplicationBuilder扩展方法
    using System;
    using Microsoft.AspNetCore.Builder;
    using Microsoft.AspNetCore.Http;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace test.Controllers
    {
        public static class AuthorizeExtensio
        {
            public static void AddAuthorize(this IApplicationBuilder applicationBuilder)
            {
                applicationBuilder.Use(async (currentContext, nextContext) =>
                {
                    if (currentContext.Request.Headers.ContainsKey("Token"))
                    {
                        var authorize = currentContext.Request.Headers["Authorization"].ToString();
                        if (authorize.Contains("Basic"))//如果是Basic 身份认证
                        {
                            var info = authorize.Replace("Basic ", string.Empty);
                            var bytes = Convert.FromBase64String(info);//反解析Basic 64
                            var contents = Encoding.Default.GetString(bytes);
                            var dd = contents.Split(":").ToArray();
                            var userName = dd[0];//用户名
                            var userPwd = dd[1];//密码
                            if (userName == "GeBiLaoWang" && userPwd == "123456")
                            {
                                await currentContext.Response.WriteAsync("验证通过").ConfigureAwait(true); //Response.WriteAsync() 需要引用 Microsoft.AspNetCore.Http;
                                await nextContext?.Invoke();
                                return;
                            }
                        }
                    }
                    currentContext.Response.StatusCode = (int)HttpStatusCode.Unauthorized;
                    await currentContext.Response.WriteAsync("See tou tomorrow!").ConfigureAwait(true);
                });
            }
        }
    }
  • 相关阅读:
    XCode Playground Overview
    Swift开发学习(二):Playground
    swift网址
    swift关于is和as的解释
    Swift之 ? 和 !
    Swift 学习之二十一:?和 !(详解)
    Swift学习三
    Makefile project
    20171110面试笔记 服务器端程序员+C/C++开发
    关键字
  • 原文地址:https://www.cnblogs.com/fger/p/11951839.html
Copyright © 2011-2022 走看看