【问题标题】:MVC Custom Filter to Authorize User and send some response backMVC 自定义过滤器以授权用户并发回一些响应
【发布时间】:2013-06-04 15:23:19
【问题描述】:
我有一个特殊的场景,我需要授权所有用户检查他们是否可以执行控制器方法。如果他没有被授权执行操作。我需要发回一些消息以查看以表明相同。我需要满足以下情况。一个项目被分配给一个用户,只有那个用户可以对该项目进行更改(分配给其他人/取消等),其他人不能执行它。另一方面,其他用户可以尝试先将项目分配给自己并对其执行操作。所以我需要捕捉的2个案例是
当用户尝试将未分配给他的项目分配给自己时,我需要向视图发送一些响应,表明该项目已被 XXX 用户锁定并提供用户覆盖它。
当用户尝试对未分配给他的项目执行其他操作时,只需将一些消息响应发送回查看
我尝试使用 AuthorizeAttribute 和 AuthorizeCore 创建自定义授权过滤器,但是当授权失败时,它会尝试重定向到登录屏幕。我不需要。我需要发回一些有用的信息。
希望我清楚。非常感谢任何帮助。
谢谢
【问题讨论】:
标签:
asp.net-mvc
asp.net-mvc-4
filter
【解决方案1】:
我尝试使用创建自定义授权过滤器
AuthorizeAttribute 和 AuthorizeCore,但是当授权失败时
它正在尝试重定向到登录屏幕。我不需要。
您可以覆盖HandleUnauthorizedRequest 方法并返回您想要的任何ActionResult。例如,如果你想呈现一个错误视图,你可以返回一个 ViewResult:
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
var viewResult = new ViewResult();
viewResult.ViewName = "~/Views/Shared/Unauthorized.cshtml";
filterContext.Result = viewResult;
}