2016-05-03 10 views
0

このコードでは、自分のページにアクセスするために2種類の使用を許可する必要があります。2種類のユーザーのみを許可する

2番目のif文をコーディングした後、私はそのページにアクセスできなくなりました。

ここに私のコードです。私が欲しいもの

private void AuthenticateUser() 
{ 
    if ((string)Session["user_type"] != "user") 
    { 
     Response.Redirect("~/Pages/Account/Login.aspx"); 
    } 
    if ((string)Session["user_type"] != "special_user") 
    { 
     Response.Redirect("~/Pages/Account/Login.aspx"); 
    } 
} 

は、特定のページにアクセスするためのユーザーuserspecial_userの2種類のみを許可することです。

+0

は常に最初のステートメントですか?特別なユーザーチェックをしてからユーザーチェックを行う必要があります。 – Baahubali

+0

@ user1490835 Pardon? –

+0

あなたのロジックはすべて間違っていると思います。上記の2つのステートメントのうちの1つが常に真であるため、ユーザータイプが1つの値しか保持できないため、Webサイトに進むことはできず、常にログインページに戻ります。 – Baahubali

答えて

3

あなたのロジックに欠陥があります。あなたは「special_user」している場合は、最初のifブロックはfalseを返すために起こっている(結局、あなたは単なる「ユーザー」「special_user」、だ)、そしてあなたがリダイレクトされます。単一のステートメントで両方のタイプの

チェック:

var userType = (string)Session["user_type"]; 

if (userType != "user" && userType != "special_user") 
{ 
    Response.Redirect("~/Pages/Account/Login.aspx"); 
} 
0

これらのユーザータイプを許可したい場合は、ご質問が誤解されている場合を除き、!= "user")の代わりに== "user")とお伝えください。

+0

私の質問を更新しました。私は、特定のページにアクセスするために、** user **と** special_user **の2種類のユーザーを許可するだけです。 –

+0

さて、 '!= '演算子は「等しくない」を意味し、「==」は「等しい」を意味します。 '!=" user "'を入力することで、ユーザタイプがページにアクセスできなくなります。あなたは私が上記のようにそれを切り替える必要があります。 –

+0

私は '==" user "'と '==" special_user "'を試してみましたが、今私がアクセスしようとしているページに直接ロードします。**認証**できなくなりました。 –

0

ユーザーは、 "ユーザー" または "special_user" することができます。他のタイプのユーザーもいますか?

このロジックは1つのif文で実装できます。 (user == "user" || user == "special_user")を確認してから、ログインページにリダイレクトします。 または do (user != "user" && user != "special_user")ログインページにリダイレクト

関連する問題