我有一个用于身份验证的自定义HttpModule。在模块的AuthenticateRequest事件处理程序中,我检查自定义SSO票证是否可用,并在这种情况下执行一些身份验证逻辑。
如果SSO票证可用但不正确,我想向用户显示友好的错误消息。我希望能够以某种方式设置HTTP状态401(未授权,在身份验证失败时使用)并从http模块传递有意义的错误消息。
然后我希望MVC应用程序以某种方式获取此信息并使用它来呈现自定义401错误页面,其中包含来自模块的有意义的错误消息。
在http模块中引发错误的最佳方法是什么?使用MVC应用程序显示错误的最佳方法是什么(在MVC应用程序的布局中获取错误消息)?
答案 0 :(得分:1)
您可以在:
中创建自定义controllerfactoryprotected override IController GetControllerInstance(RequestContext context, Type controllerType)
您可以通过上下文对象访问HttpContext和RouteData。 如果用户未经过身份验证,您可以使用所需的routeconstraints /参数(例如http状态消息)操作routedata以使您所需的控制器/操作失效(
)