当前位置: 首页 > 知识库问答 >
问题:

从ASP.NET API中的身份验证筛选器访问路由信息

利稳
2023-03-14

我已经为我的API创建了一个身份验证过滤器,它将验证auth头,以确保用户可以访问API。然而,我也有权限设置为endpoint,将允许用户读取,但不能写入等。我希望能够在这里执行此身份验证,如果失败,我可以终止请求。为此,我需要知道控制器和动作值。我可以访问url字符串,但我不愿意自己解析它,除非我必须这样做。

我尝试在AuthenticateAsync方法内部使用以下代码

var requestcontext = context.Request.GetRequestContext();
string actionName = requestcontext.RouteData.Values["action"].ToString();
string controllerName = requestcontext.RouteData.Values["controller"].ToString();
protected override void OnAuthorization(AuthorizationContext filterContext)
{
//check the route data and validate 
}

这不起作用,因为APIController不支持此方法。假设它是MVC控制器的一部分,而不是API。我已经尝试了各种其他用于MVC的重写,但它们不适用于API控制器。我更愿意在过滤器中处理这一切,这样我就不需要使用控制器,但如果这是唯一的方法,如何做到这一点?

共有1个答案

邢博文
2023-03-14

下面的代码用于在身份验证期间获取操作和控制器数据。

public class MyCustomFilter : IAuthenticationFilter
{
    public bool AllowMultiple { get; }

    public async Task AuthenticateAsync(HttpAuthenticationContext context, CancellationToken cancellationToken)
    {
        string actionName = context.ActionContext.ActionDescriptor.ActionName;
        string controllerName = context.ActionContext.ControllerContext.ControllerDescriptor.ControllerName;
    }
}
 类似资料:
  • 我已经使用Spring boot zuul和eureka服务配置了我的微服务。现在我需要验证所有路由/REST API调用。我的意思是,对于所有API,客户端发送一个accessToken。在zuul服务上,在路由到特定服务之前,我必须使用accessToken调用一个微服务(auth服务),该auth服务将检查用户是否存在发送的accessToken。如果accessToken有效,则只应进行路

  • 尝试使用条令而不是雄辩的方式让Laravel多重认证发挥作用。我尝试了很多方法,但总是被卡住。我目前定义了两个防护,两个模型,两个登录控制器,等等。如果我启用其中一个,它们就会工作。如果我同时尝试这两种方法,则只有默认的保护似乎有效。当我试图访问另一个守卫时,我被重定向到错误的登录页面。 如果我去 /login-按预期工作 如果我去/家(未登录)-按预期重定向到/登录 如果我去/注册-按预期工作

  • 我使用以下方法注册了身份验证器:

  • 问题内容: 我是AngularJS的新手,在以下情况下我对如何使用angular-“ ui-router”感到有些困惑: 我正在构建一个包含两个部分的Web应用程序。第一部分是带有登录和注册视图的主页,第二部分是仪表板(成功登录后)。 我为home部分创建了一个带有角度应用程序和配置的,用于处理和查看,还有一个针对仪表板部分的文件,其应用程序和配置用于处理许多子视图。 现在,我完成了仪表板部分,并

  • 我一直在搜索net,试图找到任何定义如何在流星和响应路由器4中处理身份验证的地方。 基本上,我希望某些路由只对经过身份验证的用户可用。有相关文件吗? 阿西尔

  • 我正在编写一个程序,它使用了带有Spring Security的JWT身份验证。我已经实现了自定义授权和身份验证过滤器。另外,我需要持久化我的令牌,它是由这些过滤器形成的。为此,我创建了令牌DAO服务,它自动连接到过滤器,并用注释标记我的过滤器以自动连接该服务。但我无法正确自动执行身份验证管理器。 我尝试在安全配置类中公开身份验证管理器bean,但没有结果。 这个错误是我在尝试构建项目时遇到的。