2013-08-19 10 views
5

我有一个自定义的HttpModule进行身份验证。在模块的AuthenticateRequest事件处理程序中,我检查自定义SSO票证是否可用,并在这种情况下执行一些身份验证逻辑。从HttpModule传递错误到MVC应用程序

如果SSO票证可用,但不正确,我想向用户显示友好的错误消息。我宁愿能够以某种方式设置HTTP状态401(未经授权,在身份验证失败时使用)并从http模块传递有意义的错误消息。

然后,我想MVC应用程序以某种方式获取此信息并使用它来呈现自定义401错误页面,其中包含来自模块的有意义的错误消息。

在http模块中引发错误的最佳方法是什么?使用MVC应用程序显示错误的最佳方法是什么?(在MVC应用程序的布局中获取错误消息)?

+0

这是一个很好的问题,我也对处理的最佳方法感兴趣当目标是返回属于MVC的错误视图时,MVC Framework/Request Pipeline之外的错误。 – asymptoticFault

回答

1

你可以创建一个自定义的ControllerFactory,并在您:

protected override IController GetControllerInstance(RequestContext context, Type controllerType) 

你必须通过你的上下文对象访问的HttpContext和的RouteData。 如果用户没有通过身份验证,您可以操纵路由数据,以期望的路由限制/参数(例如http状态消息)对所需的控制器/操作进行目标设置

相关问题