2012-08-25 24 views
8

私はフォーム認証を使用するサイトで作業しています。サイト内のページを最初に開いたときにログイン番号にリダイレクトされ、コントローラ/アクションに許可ロジックが何も配置されていないので、認証システムの動作には興味がありましたASP.NET MVCフォーム認証 - どのように動作し、認証を維持しますか?

  • 以下の設定では、MVCまたはASP.NETは認証済みかどうかを自動的に判断しますか? (私が言ったように、コントローラーに "リダイレクト"するコードやユーザーが承認されていることを確認するコードはありません
  • ASP.NETがこれを処理する場合、どの状況でアクション/コントローラー を承認する必要がありますか?つまり、[承認]属性)
  • がどのようにフォーム認証作業が、私は、「承認」が永続化されるか で特に興味がある(つまり、クッキーを??)

ウェブサイトは テクノロジーの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領域を使用しています。

答えて

8

以下の設定では、MVCまたはASP.NETは自動的に が認証済みかどうかを判断しますか?私が言ったように(、何のコードが「リダイレクト」またはユーザーが が許可されていることを確認する コントローラではありません。

はい、それはあなたのweb.configファイル内<location>セクションでは、ユーザーのみを許可するために使用することASP.NETはこれを処理した場合、どのような状況であなたが あなたの行動/コントローラを承認する必要があります

/Admin/*パスにアクセスするための管理者の役割を持っている?(つまり、[承認]属性)

[Authorize]属性を使用するASP.NET MVCは、web.config内の<location>タグを使用する代わりに、承認が必要なアクションを制御するために推奨される方法です。その理由は、ASP.NET MVCがルーティングを使用しているため、web3600のパスをハードコーディングしないでください。これは<location>セクションで発生します。常に認証を必要とするコントローラ/アクションを修飾するには、[Authorize]属性を使用してください。

フォーム認証はどのように機能しますか?私は特に "承認"が永続化される方法に興味がありますか? (クッキー?)

クッキー、はい。フォーム認証がどのように機能するかを説明するMSDNのfollowing articleもチェックアウトすることができます。

関連する問題