ASP.NET MVC表单身份验证-它如何工作和保持身份验证?
我正在一个使用表单身份验证的网站上工作。我对身份验证系统的工作方式很感兴趣,因为当我最初打开站点中的任何页面时,它会将我重定向到登录,并且所有控制器/操作中都没有任何授权逻辑ASP.NET MVC表单身份验证-它如何工作和保持身份验证?,asp.net,asp.net-mvc-3,forms-authentication,security,Asp.net,Asp.net Mvc 3,Forms Authentication,Security,我正在一个使用表单身份验证的网站上工作。我对身份验证系统的工作方式很感兴趣,因为当我最初打开站点中的任何页面时,它会将我重定向到登录,并且所有控制器/操作中都没有任何授权逻辑 通过下面的配置,MVC或ASP.NET是否会自动确定您是否已通过身份验证?(如我所说,控制器中没有“重定向”或确保用户获得授权的代码 如果ASP.NET处理此问题,在什么情况下需要授权 您的操作/控制器?(即[授权]属性) 表单身份验证是如何工作的?我对如何工作特别感兴趣 “授权”被持久化?(即cookies??) 网
- 通过下面的配置,MVC或ASP.NET是否会自动确定您是否已通过身份验证?(如我所说,控制器中没有“重定向”或确保用户获得授权的代码
- 如果ASP.NET处理此问题,在什么情况下需要授权 您的操作/控制器?(即[授权]属性)
- 表单身份验证是如何工作的?我对如何工作特别感兴趣 “授权”被持久化?(即cookies??)
<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>
C
该站点使用MVC区域,我假设这就是本节所指的区域
通过下面的配置,MVC或ASP.NET是否自动
确定您是否已通过身份验证?(如我所说,中没有代码)
将控制器设置为“重定向”或确保用户
授权的
是的,它使用web.config中的
部分仅允许具有管理员角色的用户访问/Admin/*
路径
如果ASP.NET处理此问题,在什么情况下需要授权
您的操作/控制器?(即[授权]属性)
在ASP.NET MVC中使用[授权]
属性是控制哪些操作需要授权的首选方法,而不是像您那样在web.config中使用
标记。原因是ASP.NET MVC使用路由,您不应该在web.config中硬编码路径,而这正是
部分所发生的情况。因此始终使用[授权]
属性来修饰需要验证的控制器/操作
表单身份验证是如何工作的?我对如何工作特别感兴趣
“授权”被持久化?(即cookies??)
Cookies,是的。您还可以在MSDN上签出,该MSDN解释了表单身份验证的工作原理