2017-07-18 63 views
0

我被要求創建一個使用MVC的poc,當用戶訪問該網站時。它會限制開箱即用訪問整個網站(授權)。然後開發人員將開始添加授權屬性來解鎖頁面和功能。這種方法可行嗎?如何使用授權和身份驗證來「鎖定」MVC?

目前在MVC中,默認情況下,一旦通過身份驗證,所有內容都會「解鎖」給最終用戶。然後,開發人員將添加授權屬性,開始鎖定與我負責的方法相反的網站。

這種方法的用例是開發人員忘記將authorize屬性添加到關鍵操作中。在這種情況下,現在將一個敏感功能解鎖給任何經過身份驗證的人使用該應用程序。注意:在這種情況下,控制器不具有授權屬性。

編輯:添加片段

一個FilterConfig

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

的Web.Config

<authentication mode="Windows" /> 

控制器

public class HomeController : Controller 
{ 
    [Authorize(Users = "Bob")] 
    public ActionResult Index() 
    { 
     return View(); 
    } 

    [HttpGet] 
    public ActionResult Login() 
    { 
     return View(new LoginModel()); 
    } 

    [HttpPost] 
    public ActionResult Login(LoginModel model) 
    { 
     return RedirectToAction("Index"); 
    } 
} 

EDIT2:

經過幾個小時的工作..我想我意識到我做的是正確的。但是,401沒有聲明屬性時不拋出的原因是因爲該屬性當然是引發401代碼的原因!大聲笑我不知道我是如何錯過這個,但希望沒有人卡住我今天的循環。如果我錯了,請隨時糾正我!

+0

的可能的複製[?如何鎖定在ASP.NET MVC路徑(h​​ttps://stackoverflow.com/questions/11765030/how-to-lock -down-paths-in-asp-net-mvc) –

+0

我多次閱讀過這篇文章。我可能會錯過一個細節,但我還沒有得到理想的結果。 – user1732364

回答

0

使用FilterConfig全局添加AuthorizeAttribute,然後在需要時使用控制器或操作上的AuthorizeAttribute顯式指定AllowAnonymousAttribute或特定角色。

App_Start \ FilterConfig.cs:

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

我添加了當前使用的設置,但是當我在Visual Studio中啓動網站時,它不會爲登錄操作結果(默認路由)引發401。但是,當我登錄並將我重定向到Index()時,它確實會拋出401.我錯過了什麼讓它始終拋出401?基本上只添加屬性來解鎖東西,但初始化一切應該扔401. – user1732364

+0

如果您從默認的VS模板創建了MVC應用程序,並且選擇了某種形式的授權,則將使用控制器上的默認AuthorizeAttribute創建Account控制器,但使用AllowAnonymousAttribute在GET和POST登錄操作上。爲了證明這個概念有效,只需創建一個新的MVC應用程序並運行它以獲取主頁。然後按照以上建議的全局過濾器,您會看到您被推送到登錄頁面而不是主頁。我的猜測是你的問題更可能與請求是否已經授權登錄後進行。 –

+0

我會試試這個。我一直在使用不創建帳戶控制器的Windows Auth模板創建MVC應用程序。我想我必須選擇個人認證。我會試一試! – user1732364