gpt4 book ai didi

ASP.NET MVC Forms 身份验证 - 它如何工作并保持身份验证?

转载 作者:行者123 更新时间:2023-12-02 06:36:49 24 4
gpt4 key购买 nike

我正在开发一个使用表单例份验证的网站。我对身份验证系统的工作原理很感兴趣,因为当我最初打开网站中的任何页面时,它会将我重定向到登录帐户,并且所有 Controller /操作都没有放置任何授权逻辑 .

  • 通过下面的配置,MVC 或 ASP.NET 是否会自动确定您是否已通过身份验证? (就像我说的, Controller 中没有代码来“重定向”或确保用户已获得授权。
  • 如果ASP.NET处理这个问题,什么情况下需要授权你的 Action / Controller ? (即[授权]属性)
  • 表单例份验证如何工作?我特别感兴趣的是如何“授权”是否持续存在? (即cookie??)

网站 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 区域,我认为这就是该部分所指的内容。

最佳答案

Via the configuration below, does MVC or ASP.NET automatically determine if you're authenticated? (Like I said, there is no code in the controllers to "redirect" or make sure that the user is authorized.

是的,它使用 <location> web.config 中的部分仅允许具有管理员角色的用户访问 /Admin/*路径。

If ASP.NET handles this, in what situations do you need to authorize your actions/controllers? (i.e. [Authorize] attribute)

在 ASP.NET MVC 中使用 [Authorize]属性是控制哪些操作需要授权的首选方法,而不是使用 <location>像你一样在你的 web.config 中标记。原因是 ASP.NET MVC 使用路由,您不应该在 web.config 中对路径进行硬编码,这就是 <location> 所发生的情况。部分。所以总是使用[Authorize]属性来装饰需要身份验证的 Controller /操作。

How does forms authentication work? I'm especially interested in how the "authorization" is persisted? (i.e. cookies??)

cookies ,是的。您还可以查看following article MSDN 上解释了表单例份验证的工作原理。

关于ASP.NET MVC Forms 身份验证 - 它如何工作并保持身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12126142/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com