【问题标题】:Different Authentication Modes for Asp.Net MVC and Web API on the same site?同一站点上 Asp.Net MVC 和 Web API 的不同身份验证模式?
【发布时间】:2015-03-26 21:58:47
【问题描述】:

我有一个 ASP.Net MVC4 内部网站,它也有一个 Web API 控制器。

我在 web.config 中设置了 Authentication = "Windows"。

是否可以将 Web API 设置为仅允许匿名?

** 我根据以下建议对 WebApiConfig 文件进行了更改。

 public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );      
    // Web API routes
        config.MapHttpAttributeRoutes();
        config.SuppressDefaultHostAuthentication();
        config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));
    }
}

【问题讨论】:

标签: asp.net-mvc asp.net-web-api


【解决方案1】:

当然,在您的 WebApiConfig 类中,您只需要禁止 web api 的默认主机身份验证,您可以按照以下代码进行:

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        // Web API routes
        config.MapHttpAttributeRoutes();
        config.SuppressDefaultHostAuthentication();
    }
}

【讨论】:

  • 这是 Web API 2.2 独有的功能吗?
  • 是的,它是 Web API 2 功能而不是 1。我相信您使用的是 Web API 1,没有注意到您的项目是 MVC4。 :(
  • 我已经升级了项目,以便可以使用 API 2。
  • 完美,希望这能解决你的问题,检查它,如果它有效,不要忘记将它标记为答案:)
  • 现在当我通过Mysite进入非api主页时,它一直提示我进入登录页面,如果我使用Mysite/home/index,它可以正常工作。
【解决方案2】:

在我的项目中,我使用下面的代码实现了它。该项目对 MVC 使用 Forms 身份验证,对 WebAPI 使用基本身份验证。我使用 Thinktecture 库来实现它。

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );

        var authConfig = new AuthenticationConfiguration();
        authConfig.AddBasicAuthentication((userName, password) => AuthenticationService.ValidateUser(userName, password));
        config.MessageHandlers.Add(new AuthenticationHandler(authConfig));

    }
}

【讨论】:

    猜你喜欢
    • 2015-01-15
    • 2015-09-17
    • 2015-04-05
    • 2014-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多