5

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

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

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

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

4

1 回答 1

1

您可以创建一个自定义控制器工厂,并在您的:

protected override IController GetControllerInstance(RequestContext context, Type controllerType)

您将可以通过上下文对象访问 HttpContext 和 RouteData。如果用户未通过身份验证,您可以操纵您的路由数据以使用所需的路由约束/参数(例如 http 状态消息)来定位您所需的控制器/操作

于 2013-08-19T21:12:30.057 回答