MVC ServiceStackController不遵守ServiceStack基本身份验证HtmlRedirect

时间:2013-03-27 09:01:14

标签: servicestack basic-authentication

我可能不理解某些事情,但我有以下问题:

AppHost.cs

Plugins.Add(new AuthFeature(
            () => new AuthUserSession(),
            new IAuthProvider[] { new BasicAuthProvider() }) { HtmlRedirect = null });

HomeController.cs

[Authenticate]
public class HomeController : ServiceStackController

问题

问题在于,当我尝试访问HomeController时,我被重定向到~/login?redirect=....

我认为通过将HtmlRedirect设置为null,也会影响MVC控制器,但似乎没有。

这是预期的行为吗?或者我做错了什么?

我的最终目标是让浏览器提示带有质询/响应基本身份验证框。

2 个答案:

答案 0 :(得分:3)

this commit开始,您可以在身份验证失败时覆盖默认行为:

[Authenticate]
public class HomeController : ServiceStackController
{
    public override ActionResult AuthenticationErrorResult
    {
        get
        {
            //return 401 Unauthorized for example
            return new HttpStatusCodeResult(401);
        }
    }
}

ServiceStackController.AuthorizationErrorResult可以用同样的方式修改。

HtmlRedirect设置为null在这种情况下不起作用,因为与ASP.net一起使用时[Authenticate]属性(以及所有其他ServiceStack属性)的行为略有不同MVC控制器而不是ServiceStack服务。

答案 1 :(得分:1)

我一直在ServiceStack Jabbr聊天页面上,被告知这是一个错误,今天会有一个修复程序!

https://github.com/ServiceStack/ServiceStack/blob/master/src/ServiceStack.FluentValidation.Mvc3/Mvc/ExecuteServiceStackFiltersAttribute.cs#L25