请问在.net core webapi中多层保存传递当前用户信息,有什么好的处理方式?

举例:请求时,会在请求header中携带用户身份信息,在请求后续处理中,会经常用到用户身份信息,在多层中怎么样避免一层一层传递

回答

我是用JWT /// <summary>

/// 重写过滤器

/// </summary>

/// <param name="context"></param>

public void OnActionExecuting(ActionExecutingContext context)

{

ReturnModel ret = new ReturnModel();

if (context.HttpContext.Request.Headers.ContainsKey("access_token"))

{

//获取token

// object tokenobj = context.ActionArguments["token"];//请求参数获取,用地址栏的参数 还需要加验证

object tokenobj = context.HttpContext.Request.Headers["access_token"].ToString();//请求头里面获取

string token = tokenobj.ToString();

            string loginID = "";

//验证jwt,同时取出来jwt里边的用户ID

TokenType tokenType = tokenHelper.ValiTokenState(token, a => a["iss"] == "QmWyy" && a["aud"] == "HospEveryCus", action => { loginID = action["Id"]; });

if (tokenType == TokenType.Fail)

{

ret.Code = 202;

ret.Msg = "access_token验证失败";

context.Result = new JsonResult(ret);

return;

}

if (tokenType == TokenType.Expired)

{

ret.Code = 205;

ret.Msg = "access_token已经过期";

context.Result = new JsonResult(ret);

}

if (!string.IsNullOrEmpty(loginID))

{

//给控制器传递参数(需要什么参数其实可以做成可以配置的,在过滤器里边加字段即可)

context.ActionArguments.Add("patientId", loginID);//存储当前客户的ID

}

}

else

{

ret.Code = 401;

ret.Msg = "没有令牌,禁止访问";

context.Result = new JsonResult(ret);

return;

}

}

以上是 请问在.net core webapi中多层保存传递当前用户信息,有什么好的处理方式? 的全部内容, 来源链接: www.h5w3.com/113842.html

回到顶部