我正在使用表单身份验证的网站上工作。我对身份验证系统的工作方式很感兴趣,因为当我最初打开站点中的任何页面时,它会将我重定向到登录名,并且没有任何控制器/操作在其中放置任何授权逻辑。
- 通过下面的配置,MVC 或 ASP.NET 是否会自动确定您是否通过了身份验证?(就像我说的,控制器中没有代码可以“重定向”或确保用户被授权。
- 如果 ASP.NET 处理这个问题,在什么情况下您需要授权您的操作/控制器?(即 [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 区域,我认为这就是该部分所指的内容。