.NET Core 3.1-在控制器调用之间存储临时值



在授权方案中,我在.NET侧的角度前端有两个入口点

在某个时刻,我需要存储我生成的的标识符

我尝试了HttpContext.Items,但从一个http调用到另一个,它被丢弃了

  • 如何存储(和加密?(该值

我在网上找到的唯一代码,用一种方式加密,我需要解密才能重用它

// POST: api/requestAuthorization
[HttpPost]
[Route("requestAuthorization")]
public async Task<ActionResult<AuthorizeReturn>> RequestAuthorization(AuthorizeRequest authorizeRequest)
{
string codeVerifier = GenerateCodeVerifier();
httpContextAccessor.HttpContext.Items["codeVerifier"] = codeVerifier;

string url = ...
AuthorizeReturn authorizeReturn = new AuthorizeReturn();
authorizeReturn.Url = url;
return authorizeReturn;
}

该代码验证器需要在以后的进入点中使用

// GET: api/EdenredConnect/authorize
[HttpGet]
[Route("authorize")]
public async Task<IActionResult> Authorize(...)
{
string code_verifier = (string)httpContextAccessor.HttpContext.Items["codeVerifier"];
...
return Ok();
}

谢谢你的帮助

从控制器返回codeVeryfier,并在前端将其存储在seesion存储中。然后,如果你使用的是axios,你可以使用拦截器函数,它被调用的每个请求如下:

export const Axios = axios.create({
baseURL: 'someURL',
headers: {
'Content-Type': 'application/json'
},
});
Axios.interceptors.request.use((config) => {
config.headers.CodeVeryfier = `${sessionStorage.getItem('codeVeryfier')}`;
return config;
});

然后在后端,您将能够从HttpContext 访问codeVeryfier

相关内容

  • 没有找到相关文章

最新更新