2015-11-20 21 views
0

我的MVC 5申請的HomeController的具有[授權]屬性授權上的HomeController力屬性登錄使用AllowAnonymous控制器上

[Authorize] 
public class HomeController : Controller 

的SimpleController是跟隨着(一個簡單的試驗):

[AllowAnonymous] 
public class SimpleController : Controller 
{ 
    // GET: Simple 
    public ActionResult Index() 
    { 
     return View(); 
    } 
} 

當我直接瀏覽到http://url/simple/index時,爲什麼我必須登錄?

我必須額外的「強制認證代碼」或過濾器註冊。

當我刪除[授權]在HomeController中,該SimpleController正常工作,而無需登錄

+1

授權對一個控制器的要求與另一個控制器無關。但是,只有在添加了[Authorize]時才需要'[AllowAnonymous]'。如果控制器或操作不需要認證,請刪除'[AllowAnonymous]'屬性。 –

+0

我知道,但奇怪的是,當我刪除HomeController上的[Authorize]時,SimpleController工作正常,無需登錄。 – Filip

+0

您在調用的HomeController中是否有任何子操作?在'SimpleController'的視圖中?所有的孩子行爲都應該沒有'[Authorize]',或者如果他們在裝有'[Authorize]'的控制器中,應該用'[AllowAnonymous]'裝飾。任何兒童行爲都不應*需要*授權。它必須始終是可選的。 –

回答

0

您可以在FilterConfig.cs已配置整體授權過濾器,位於App_Start文件夾

public class FilterConfig 
{ 
    public static void RegisterGlobalFilters(GlobalFilterCollection filters) 
    { 
     filters.Add(new AuthorizeAttribute()); 
    } 
}