フォーム認証を使用するサイトで作業しています。サイト内の任意のページを最初に開くと、ログインにリダイレクトされ、コントローラー/アクションのいずれにも承認ロジックが配置されていないため、認証システムがどのように機能しているかに興味がありました。
- 以下の構成により、MVC または ASP.NET は、認証されているかどうかを自動的に判断しますか? (私が言ったように、コントローラーには「リダイレクト」したり、ユーザーが承認されていることを確認したりするコードはありません。
- ASP.NET がこれを処理する場合、どのような状況でアクション/コントローラーを承認する必要がありますか? (つまり、[Authorize] 属性)
- フォーム認証はどのように機能しますか? 「承認」がどのように保持されるかに特に興味がありますか? (つまり、クッキー??)
Web サイト 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 エリアを使用していますが、これはこのセクションが参照しているものだと思います。