2013-06-03 68 views
0

我有一個特殊的場景,我需要授權所有用戶檢查他們是否可以執行控制器方法。如果他無權執行操作。我需要發回一些消息以表明相同。我需要迎合情景。項目分配給用戶,只有該用戶可以對該項目進行更改(分配給他人/取消等),而其他人無法執行該項目。另一方面,其他用戶可以嘗試先將項目分配給自己,然後對其執行操作。因此,其中有2例我需要捕獲是MVC自定義篩選器授權用戶併發送一些響應

  1. 當用戶試圖分配沒有分配給他自己的項目,然後我需要發送一些響應返回給視圖,表明該項目已被鎖定XXX用戶並提供用戶覆蓋它。

  2. 當用戶試圖在沒有分配給他然後就發回了一些消息的反應,查看

我試圖創建一個使用AuthorizeAttribute和AuthorizeCore自定義授權過濾器中的項目進行其它操作,但是當授權失敗時,它正嘗試重定向到登錄屏幕。我不需要。我需要發回一些有用的信息。

希望我清楚。任何幫助,高度讚賞。

感謝

回答

2

我試圖創建一個使用 AuthorizeAttribute和AuthorizeCore自定義授權過濾器,但是當授權失敗 它試圖重定向到登錄界面。我不需要。

您可以覆蓋HandleUnauthorizedRequest方法並返回所需的任何ActionResult。例如,如果您想呈現錯誤視圖,則可以返回ViewResult:

protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext) 
{ 
    var viewResult = new ViewResult(); 
    viewResult.ViewName = "~/Views/Shared/Unauthorized.cshtml"; 
    filterContext.Result = viewResult; 
}