文件内容 AuthMiddleware.cs 1 KB 1682 字符
using System.Security.Claims;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Security.Claims;

namespace ExampleForm.HttpApi.Host.Services
{
    /// <summary>
    /// 
    /// </summary>
    public class AuthMiddleware : IMiddleware, IScopedDependency
    {

        /// <summary>
        /// 
        /// </summary>
        /// <param name="context"></param>
        /// <param name="next"></param>
        /// <returns></returns>
        public async Task InvokeAsync(HttpContext context, RequestDelegate next)
        {
            var token = String.Empty;
            if (context.Request.Headers.TryGetValue(PublicString.TokenHeadName, out var vals))
            {
                foreach (var htoken in vals)
                {
                    if (htoken.TokenCheck())
                    {
                        token = htoken;
                        break;
                    }
                }
            }
            if (String.IsNullOrEmpty(token))
            {
                if (context.Request.Cookies.TryGetValue(PublicString.TokenHeadName, out var tok))
                {
                    if (tok.TokenCheck())
                    {
                        token = tok;
                    }
                }
            }
            if (!String.IsNullOrEmpty(token))
            {

                var claims = new[] { new Claim("FilterSiteId", "true"), new Claim(AbpClaimTypes.UserName, token), new Claim(AbpClaimTypes.SurName, token) };
                var identity = new ClaimsIdentity(claims, "Custom");//Simple
                context.User = new ClaimsPrincipal(identity);

            }
            await next(context);
        }
    }
}
​ ​