Asp.net
ASP.NET MVC Forms 身份驗證 - 它如何工作並保持身份驗證?
我正在使用表單身份驗證的網站上工作。我對身份驗證系統的工作方式很感興趣,因為當我最初打開站點中的任何頁面時,它會將我重定向到登錄名,並且沒有任何控制器/操作在其中放置任何授權邏輯。
- 通過下面的配置,MVC 或 ASP.NET 是否會自動確定您是否通過了身份驗證?(就像我說的,控制器中沒有程式碼可以“重定向”或確保使用者被授權。
- 如果 ASP.NET 處理這個問題,在什麼情況下您需要授權您的操作/控制器?(IE$$ Authorize $$屬性)
- 表單身份驗證如何工作?我對如何保持“授權”特別感興趣?(即餅乾??)
網站 web.config 技術:MVC 3、Entity Framework 4.1(程式碼優先)、ASP.NET 4
<configuration> <system.web> <authentication mode="Forms"> <forms loginUrl="~/Account/Index" timeout="2880" /> </authentication> <membership defaultProvider="CodeFirstMembershipProvider"> <providers>c <clear /> <add name="CodeFirstMembershipProvider" type="Vanguard.AssetManager.Services.Security.MembershipService" applicationName="/" /> </providers> </membership> <roleManager enabled="true" defaultProvider="CodeFirstRoleProvider"> <providers> <clear /> <add name="CodeFirstRoleProvider" type="Vanguard.AssetManager.Services.Security.RoleService" applicationName="/" /> <add applicationName="/" name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" /> </providers> </roleManager> </system.web> <location path="Admin"> <system.web> <authorization> <allow roles="Admin" /> <deny users="*" /> </authorization> </system.web> </location> <location path="Content/packages"> <system.web> <authorization> <allow roles="Admin" /> <deny users="*" /> </authorization> </system.web> </location> <location path="Home"> <system.web> <authorization> <deny users="?" /> </authorization> </system.web> </location> <location path="CheckIn"> <system.web> <authorization> <allow roles="CheckIn, Admin" /> <deny users="*" /> </authorization> </system.web> </location> <location path="Assignment"> <system.web> <authorization> <allow roles="Assignment, Admin" /> <deny users="*" /> </authorization> </system.web> </location> <configuration>該站點使用 MVC 區域,我認為這就是該部分所指的內容。
通過下面的配置,MVC 或 ASP.NET 是否會自動確定您是否通過了身份驗證?(就像我說的,控制器中沒有程式碼可以“重定向”或確保使用者被授權。
是的,它使用
<location>web.config 中的部分來僅允許具有管理員角色的使用者訪問/Admin/*路徑。如果 ASP.NET 處理這個問題,在什麼情況下您需要授權您的操作/控制器?(IE
$$ Authorize $$屬性)
在 ASP.NET MVC 中,使用
[Authorize]屬性是控制哪些操作需要授權的首選方法,而不是<location>像您那樣使用 web.config 中的標記。原因是 ASP.NET MVC 使用路由,您不應該在 web.config 中硬編碼路徑,這就是該<location>部分發生的情況。因此,請始終使用該[Authorize]屬性來裝飾需要身份驗證的控制器/操作。表單身份驗證如何工作?我對如何保持“授權”特別感興趣?(即餅乾??)
餅乾,是的。您還可以查看 MSDN 上的以下文章,該文章解釋了表單身份驗證的工作原理。