我目前正在开发使用MVC 4个Web API项目类型的Web API。 我目前在这里我需要一些安全添加到API的一个阶段。 我知道了授权属性,然而,客户端将采用不同的方式。 为此,我曾试图重写授权属性在我自己的类作为一个基本的开始,我只是有AuthorizeCore总是返回这应该是指没有经过认证假的。 如果我再在控制器内添加这一个动作,动作总是完成,我总是检索数据。 我认为,其原因可能是由于属性不是在web.config文件正在注册的自定义,但是,我不知道该如何不使用窗体身份验证时,去了解这一点。
我使用的测试代码如下所示的自定义属性新的MVC 4个Web API项目。
public class Auth : AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
return false;
}
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
filterContext.Result = new RedirectResult("http://www.google.com");
}
}
然后,我已经添加的属性到默认ValuesController这样的Get方法
[Auth]
public IEnumerable<string> Get()
然而,当我浏览到域/ API /价值观我总是呈现的数据,而不是预期的重定向到谷歌。 任何帮助表示赞赏。
编辑:环顾四周一点点经过,我发现这个在这里: http://weblogs.asp.net/jgalloway/archive/2012/05/04/asp-net-mvc-authentication-customizing-authentication-and-authorization-the -右- way.aspx这表明,我选择了错误的错误AuthorizeAttribute类,因为我选择了从System.Web.MVC的一个,而不是从System.Web.Http之一。 看来,HTTP版本不允许配置为MVC版本相同级别的,因为它不会让我重写AuthorizeCore。 在这个任何更多的帮助表示赞赏。