我有一个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));
}
}
答案 0 :(得分:0)
当然,在您的WebApiConfig类中,您需要仅禁用web api的默认主机身份验证,您可以按照以下代码执行此操作:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API routes
config.MapHttpAttributeRoutes();
config.SuppressDefaultHostAuthentication();
}
}
答案 1 :(得分:0)
在我的项目中,我使用下面的代码实现了它。该项目使用用于MVC的表单身份验证和用于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));
}
}