我正在使用API3.0,目前我有一个可以接受外部(没有防伪令牌)和内部(有防伪令牌)调用的.netcore,在这种情况下,我需要在API方法上添加IgnoreAntiforgeryToken,并根据请求来确定是否检查防伪令牌。
想知道在api函数中有没有验证防伪令牌的方法?提前谢谢。
发布于 2020-10-27 15:57:56
据我所知,如果您想要调用Antiforgery类来验证防伪令牌,可以直接在您的api中调用IAntiforgery服务,然后使用ValidateRequestAsync来验证令牌。
更多细节,你可以参考下面的代码:
1.在startup.cs ConfigureServices方法中添加services.AddHttpContextAccessor();
2.在您的控制器中添加以下代码:
public class HomeController : Controller
{
private readonly IAntiforgery _antiforgery;
private readonly IHttpContextAccessor _httpcontextaccessor;
public HomeController(IAntiforgery defaultAntiforgery, IHttpContextAccessor httpcontextaccessor)
{
_antiforgery = defaultAntiforgery;
_httpcontextaccessor = httpcontextaccessor;
}
public async Task<IActionResult> PrivacyAsync()
{
try
{
await _antiforgery.ValidateRequestAsync(_httpcontextaccessor.HttpContext);
}
catch (Exception)
{
throw;
}
return View();
}
}发布于 2020-10-27 16:07:08
我使用类似的方法@Brando Zhang
var _antiforgery=(IAntiforgery)this.HttpContext.RequestServices.GetService(typeof(IAntiforgery));
var IsValid = _antiforgery.IsRequestValidAsync(this.HttpContext).Result;
return IsValid;https://stackoverflow.com/questions/64548339
复制相似问题