【问题标题】:Adding authorization header with access token for every request using MvcHandler使用 MvcHandler 为每个请求添加带有访问令牌的授权标头
【发布时间】:2015-01-17 10:36:40
【问题描述】:

我正在尝试为资源服务器实现 OAuth 2.0 资源访问。我已经获得了一个令牌并希望将该令牌传递给资源服务器,以便资源服务器可以针对每个请求与授权服务器进行验证,并在 http 标头中传递令牌 (例如授权:承载mF_9.B5f-4.1JqM)。

我正在使用 MVC 4,并且有人告诉我应该使用 MvcHandler 来实现这一点但是我不确定从哪里开始。谁能指出我应该做什么的大方向?我已经有一堆动作和控制器,并希望将这一层放在它们之上,而不是回到每个动作并更改和/或装饰每个动作。

【问题讨论】:

  • 好吧,您可以实现您的自定义授权属性并将其全局放置在所有操作中

标签: asp.net-mvc asp.net-mvc-4 oauth-2.0


【解决方案1】:

使用身份验证过滤器

身份验证过滤器是 ASP.NET MVC 中的一种新型过滤器, 在 ASP.NET MVC 管道中的授权过滤器之前运行,并且 允许您为每个操作、每个控制器指定身份验证逻辑, 或全局用于所有控制器。身份验证过滤器过程 请求中的凭据并提供相应的主体。 身份验证过滤器还可以在 响应未经授权的请求。

您只需要根据您的需要实现IAuthenticationFilter 注册它就可以了。

public class YourAuthenticationAttribute : ActionFilterAttribute, IAuthenticationFilter
    {
        public void OnAuthentication(AuthenticationContext filterContext)
        {            
        }

        public void OnAuthenticationChallenge(AuthenticationChallengeContext filterContext)
        {   
            if (user.Identity.IsAuthenticated == false)
            {
                 filterContext.Result = new HttpUnauthorizedResult();
            }
        }
    }

如果您希望它是全局的,请将其作为全局过滤器添加到 FilterConfig.cs

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
    filters.Add(new YourAuthenticationAttribute());
}

更多信息:

ASP.NET MVC 5 Authentication Filters

ASP.NET MVC 5 Authentication Filters

AUTHENTICATION FILTERS IN ASP.NET MVC 5

FINALLY THE NEW ASP.NET MVC 5 AUTHENTICATION FILTERS!

【讨论】:

    猜你喜欢
    • 2018-11-25
    • 2015-11-27
    • 1970-01-01
    • 2019-06-04
    • 2016-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多