从异常筛选器强制联合身份验证重定向

时间:2015-10-07 04:17:03

标签: c# asp.net asp.net-mvc authentication

我有一个使用WSFederationAuthentication管理身份验证的Asp.net MVC应用程序。我在控制器操作中进行了一系列调用,这些调用可能导致需要再次进行身份验证。现在,当我确定需要重新验证时,我会抛出一个UnauthorizedAccessException。

我为控制器实现了一个ExceptionFilter,用于捕获此UnauthroizedAccessException并返回401.这里是代码:

public void OnException(System.Web.Mvc.ExceptionContext context)
{
    if (context.Exception is UnauthorizedAccessException)
    {
        context.Result = new HttpUnauthorizedResult("Login again.");
        context.ExceptionHandled = true;
        return;
    }
}

问题是联合身份验证HttpModule没有将此请求重定向到STS。用户只收到401错误。在管道中,ExceptionFilter是否太晚才能返回401?还有其他方法可以强制用户再次进行身份验证吗?

1 个答案:

答案 0 :(得分:0)

如果bool valid = false; int input = 0; while (!valid) { Console.WriteLine ("Prompt"); try { input = Convert.ToInt32 (Console.ReadLine ()); valid = true; } catch {} } 发生,请将用户重定向到登录页面:

UnauthroizedAccessException