gpt4 book ai didi

asp.net-core-mvc - AllowAnonymous 属性在 .net core api 2.2 中不起作用。在建议重复或回答之前,请考虑 (.NetCore) 和 version(2.2)

转载 作者:行者123 更新时间:2023-12-04 10:54:17 25 4
gpt4 key购买 nike

我正在使用授权过滤器的 .net core api 2.2 中工作。我只是在标题中的授权标签中检查不记名 token ,如果不记名 token 已经存在,则可以调用用户操作。但是我想从授权部分排除一些操作。我在特定操作上使用 AllAnonymous 属性,但调用相同的匿名方法正在调用授权过滤器。过滤器的代码如下:

using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc.Filters;
public class ApiAuthorizeFilter : AuthorizeAttribute, IAuthorizationFilter
{
public void OnAuthorization(AuthorizationFilterContext context)
{
string token = context.HttpContext.GetToken();
if (string.IsNullOrEmpty(token))
{
context.HttpContext.Response.StatusCode = (int)HttpStatusCode.Unauthorized;
}
else
{
string realmId = context.HttpContext.GetRealm();
if (string.IsNullOrEmpty(realmId))
{
context.HttpContext.Response.StatusCode = (int)HttpStatusCode.Unauthorized;
}
}
}
}

根据我检查过的一些解决方案,这个问题没有得到解决。请分享有关 .net core API version 2.2 的任何解决方案。

最佳答案

您可以查看 AllowAnonymous里面的属性OnAuthorization方法 :

// Allow Anonymous skips all authorization
if (context.Filters.Any(item => item is IAllowAnonymousFilter))
{
return;
}

根据您的代码:
public class ApiAuthorizeFilter : AuthorizeAttribute, IAuthorizationFilter
{
public void OnAuthorization(AuthorizationFilterContext context)
{
// Allow Anonymous skips all authorization
if (context.Filters.Any(item => item is IAllowAnonymousFilter))
{
return;
}
string token = context.HttpContext.GetToken();
if (string.IsNullOrEmpty(token))
{
context.HttpContext.Response.StatusCode = (int)HttpStatusCode.Unauthorized;
}
else
{
string realmId = context.HttpContext.GetRealm();
if (string.IsNullOrEmpty(realmId))
{
context.HttpContext.Response.StatusCode = (int)HttpStatusCode.Unauthorized;
}
}
}
}

关于asp.net-core-mvc - AllowAnonymous 属性在 .net core api 2.2 中不起作用。在建议重复或回答之前,请考虑 (.NetCore) 和 version(2.2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59305183/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com