2011-01-13 14 views
0

私はASP.NET Webサイトを開発しています。私が座っているページには、彼が登録ユーザーである場合にのみ見ることができるページがいくつかあります。そうでない場合は、適切なページにリダイレクトする必要があります。ユーザーがログインしているかどうかをPage_loadイベントで確認する必要がありますか?登録するまでユーザーが特定のページにアクセスしないようにします。

ユーザーがURLの名前を入力すると、これは正常に機能しますか?

答えて

0

ここでは、私は単純なウェブサイトのいくつかのために何をしています。典型的なものはforms authenticationです。 global.ascx.csから:あなたは明示的にすべてのユーザーおよび他のすべての要求に見えるはずページを指定

protected void Application_PostAuthenticateRequest(object sender, EventArgs e) 
{ 
    var unsecuredPages = new[] 
          { 
           "test.htm", 
           "email.htm" 
          }; 

    bool letThrough = unsecuredPages.Any(s => Request.RawUrl.ToLowerInvariant().Contains(s)); 
    if (letThrough) 
    { 
     return; 
    } 

    if (!User.Identity.IsAuthenticated && 
     !Request.RawUrl.Contains(FormsAuthentication.LoginUrl)) 
    { 
     FormsAuthentication.SignOut(); 
     FormsAuthentication.RedirectToLoginPage(); 
    } 
} 

は、ログインページにリダイレクトされます。私のweb.configファイルには、次のようになります。

<authentication mode="Forms"> 
    <forms loginUrl="Login.aspx" protection="All" timeout="480" name="xyz" path="/" requireSSL="false" slidingExpiration="true" defaultUrl="Default.aspx" cookieless="UseDeviceProfile" enableCrossAppRedirects="true"/> 
</authentication> 
<location path="Styles"> 
    <system.web> 
     <authorization> 
      <allow users="*"/> 
     </authorization> 
    </system.web> 
</location> 
+0

あなたのスタイルフォルダのように2つのセキュリティ保護されていないページに要素を追加するだけの理由はありますか? – patmortech

+0

本当に、私は設定ファイルではなく、そのファイルを持っている方が好きなので、他の人がそれを混乱させることはありません。反対の要件があるかもしれません。 –

+0

上記のコード 'var unsecuredPages = new []' をGlobal.asax.csに書き込むと、新しいデータの後にデータ型を指定するよう求められます。 - / – Cipher

0

はい、あなたがクラスを作ることができ、そのクラスには、ユーザーが登録されているチェックしたりせず、登録ユーザーのために必要とされているページにそのクラスを継承することができます。

@HeavyWaveのようにフォーム認証も使用できます。

関連する問題