2012-02-20 23 views
6

ユーザーの画面の上部にツールバーを表示しようとしています。ツールバーがログインしていれば、アカウントにアクセスできます。ログインしていない場合は、ログインするにはどうすればいいですか?C#とRazorを使ってこれをどうやって行い、構文とコンパイルのエラーが発生するかは完全にはわかりません。クッキーが設定されているかどうかを確認する

私の現在のフォームは次のとおりです。私は1つのファイル、_siteLayout.cshtmlを持っています。これにより、ツールバーが画面上部に保存されます。ログインフォームを外部データベースと照合し、認証されていれば、クライアントはCookieを作成します。私が本質的に望む形は、

if(user logged in) 
    render account management page 
else{ 
    render login page 
} 

シンプルですが、私は多くの問題に遭遇しています。これまでのコードを削除して、これまでのところバルクを削除しています:

<body> 
    @using System.Text; 
    @using System.Net.Sockets; 
    @{ 
     if(Request.Cookies["mpUsername"] == null){ 
     //if user is not logged in 
      //some authentication is ran, if passed, isValid is set to true  
       if (isValid) { 
        //login is valid, set cookie 
        HttpCookie cookie = Request.Cookies.Get("mpUsername"); 
       if(cookie == null) { 
        cookie = new HttpCookie("mpUsername"); 
        cookie.Value = username; 
        cookie.Expires = DateTime.Now.AddDays(3); 
        Response.Cookies.Add(cookie); 
       } 
       } else { 
        //login invalid, prompt for pass again 
       <text>Password incorrect, please try again</text> 
       } 
      } 
    } 
    }//end of razor, HTML begins 
    <html> 
     <body> 
     @{ //if cookie is set 
      //if(Request.Cookies["mpUsername"] == null){ 

     } 
     <h2>ACCOUNT MANAGEMENT</h2> 
     @{ 
      } else {//user not logged in, cookie not set 
     } 
     //login form 
     </body> 
    </html> 

私がやりたいことをする最善の方法は何ですか?私の実際のコードでは、ログインフォームとアカウント管理のページは明らかにはるかに大きいので、もう少し混乱しています。

+2

FormsAuthenticationの使用を検討しましたか? http://msdn.microsoft.com/en-us/library/system.web.security.formsauthentication.aspx –

+0

はい、私は認証を実行する方法をサポートするとは思わない - 私はユーザーのログイン情報を確認していますローカルに格納されているサーバーではなくリモートサーバーに対して実行されます。 –

+1

私はPauliに同意します - 組み込みシステムを使用してください。何かを見逃したり、セキュリティホールを開いたままにするのはとても簡単です。 – Paddy

答えて

0

これはCookies in ASP.NET using C#について学ぶのに役立ちます。

+1

提供されているリンクは良好なリソースですが、そのページを移動しても、ページに回答を提供し、そのリンクを参考にして詳細情報を参照することをお勧めします。 – mgrenier

関連する問題