Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在ASP.NET MVC 2应用程序中显示授权错误消息?_Asp.net_Asp.net Mvc_Authorization - Fatal编程技术网

如何在ASP.NET MVC 2应用程序中显示授权错误消息?

如何在ASP.NET MVC 2应用程序中显示授权错误消息?,asp.net,asp.net-mvc,authorization,Asp.net,Asp.net Mvc,Authorization,我正在使用Authorize属性根据用户角色过滤控制器操作,但是如果尝试了未经授权的操作,用户将重定向回登录页面。作为我的用户,我会发现这令人困惑和恼火 如何改为显示一条错误消息,通知用户他们需要某些角色,并保持在他们尝试操作的视图上?您需要编写一个自定义授权属性,该属性不返回属性。保持在同一个视图上也是一项困难的任务,因为您可能需要在请求后保留所有上下文。到目前为止,我找到的解决方案是您需要在_ViewStart(可能是MVC2中的其他内容)中保存当前页面的会话,然后在自定义授权类中使用它重定

我正在使用Authorize属性根据用户角色过滤控制器操作,但是如果尝试了未经授权的操作,用户将重定向回登录页面。作为我的用户,我会发现这令人困惑和恼火


如何改为显示一条错误消息,通知用户他们需要某些角色,并保持在他们尝试操作的视图上?

您需要编写一个自定义
授权
属性,该属性不返回属性。保持在同一个视图上也是一项困难的任务,因为您可能需要在请求后保留所有上下文。

到目前为止,我找到的解决方案是您需要在_ViewStart(可能是MVC2中的其他内容)中保存当前页面的会话,然后在自定义授权类中使用它重定向到页面并显示消息。

Ouch!我是否可以返回一个自定义的HttpUnauthorizedResult,它被路由到错误视图而不是登录视图,并在错误视图上提供一个ActionLink返回到起始视图?编写cusom“Authorize”属性比您想象的要容易得多,这是处理您的情况的最干净的方法,而且它也可以在整个项目中重复使用。@Profk,如果您想被路由到错误视图,或者
Response.Redirect
,或者在过滤器中返回
ViewResult
。@Saajid,我很抱歉这很简单,但我总是想得太多,类似于使用某种指令重定向回原始视图,以显示带有错误建议的模型弹出窗口。我现在坚持错误观点。@Darin,恐怕我现在知道从哪里开始实施你的建议了。我知道它在我的自定义属性中,但我该如何执行Response.Redirect,或者,我的Viewresult返回如何知道去哪里?