【发布时间】:2012-12-10 15:42:22
【问题描述】:
我正在尝试确定如何在表单身份验证下配置对 Web API 控制器服务的访问。如果我通过添加授权元素添加授权配置以拒绝所有匿名用户:
授权>
只有登录页面可以按预期访问。但我也想访问从控制器返回的列表。我将 [AllowAnonymous] 属性添加到一个简单的服务,该服务返回用于填充下拉菜单的值。例如:
namespace WebAPI.Controllers
{
public class RegisterController : ApiController
{
[AllowAnonymous]
public List<ListElement> GetActivitiesList()
{
List<ListElement> li = new List<ListElement>();
li.Add(new ListElement() { Id = 1, Text = "Item 1" });
li.Add(new ListElement() { Id = 2, Text = "Item 2" });
li.Add(new ListElement() { Id = 3, Text = "Item 3" });
return li;
}
}
}
我将控制器目录添加到 web.config 中的允许列表中:
授权>
如果我浏览我的示例页面来调用控制器,即使我添加了 [AllowAnonymous] 属性,表单身份验证仍然会通过 302 重定向拒绝访问登录页面。如果我删除整个网站的授权元素“
目标是能够在几个页面上为匿名用户使用特定服务(如注册),而站点的其余部分访问权限仅限于经过身份验证的用户。访问服务和访问文件并不完全一样,所以我的猜测是我必须为这种情况编写一个特殊的处理程序,但我不确定如何去做。
【问题讨论】:
-
我应该提到我正在更新一个 Web 窗体应用程序,并通过 NuGet 安装了 Web API。该项目不是 MVC 应用程序。考虑到潜在的安全风险,此时最好的办法可能是创建一个新的 Web API 应用程序。感谢您的指点。
标签: asp.net web-config asp.net-web-api forms-authentication