gpt4 book ai didi

c# - 在不添加mvc属性的情况下向特定路由添加授权

转载 作者:太空宇宙 更新时间:2023-11-03 22:39:55 25 4
gpt4 key购买 nike

我需要在不添加 Authorize 属性的情况下向特定路由添加授权。有什么办法可以在启动时做到这一点?我知道我可以将 Authorize 属性全局添加到所有路由,但我只需要将授权添加到 Controller 中的特定方法,而无需触及该 Controller 中的任何代码。

最佳答案

如果您无法触摸代码,我看到了唯一的解决方案 - 使用中间件进行检查。假设您要限制访问的路由是 POST '/users/register',因此您可以使用在启动时全局注册的 ActionFilter,您在其中检查 url,如果它的 url 是 '/users/register',则您正在尝试检查 token 和如果 token 无效 - 返回 401。

也可以使用Owin中间件

这是使用 ActionFilter 实现此类逻辑的简单示例

public class WebApiApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
GlobalConfiguration.Configuration.Filters.Add(new CheckAuthorizationFilterAttribute());
GlobalConfiguration.Configure(WebApiConfig.Register);
}
}
public class CheckAuthorizationFilterAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(HttpActionContext actionContext)
{
var requestUri = actionContext.Request.RequestUri.AbsolutePath;
if (requestUri == "/api/users/register")
{
var isTokenValid = ValidateToken();
if (!isTokenValid)
actionContext.Response = new HttpResponseMessage(HttpStatusCode.Unauthorized);
return;
}
}

public bool ValidateToken() => false;

public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
{

}
}

关于c# - 在不添加mvc属性的情况下向特定路由添加授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52821985/

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