我有一个使用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?还有其他方法可以强制用户再次进行身份验证吗?
答案 0 :(得分:0)
如果bool valid = false;
int input = 0;
while (!valid) {
Console.WriteLine ("Prompt");
try
{
input = Convert.ToInt32 (Console.ReadLine ());
valid = true;
}
catch {}
}
发生,请将用户重定向到登录页面:
UnauthroizedAccessException