Asp.Netでセッションが合法かどうかを判断する方法

1602 ワード



 if (Session["UserID"] == "" || Session["UserID"] == null)
 {
     Response.Redirect("../Login.aspx?m= , !");
 }
ずっと私はこの方法がとてもよくないと思って、とてもよくなくて、しかしずっと良い方法を探し当てていないで、さっき突然匿名の方法と考えて、结合??演算子は、セッションが空であれば合法的ではなく、ユーザーがログインしているかどうかを判断するために使用できます.
Session["UserID"]はObjectタイプを返すため、空であればポインター異常を報知し、上の形式で見ることができる.また、このようなログイン状態を判断する行為は、一部の項目ではほとんどのページで使用する必要があるため、他の共通の静的方法とともにクラスに入れて、以下のように書く方法を抽出することができる.


 ///
 /// , session ,
 ///

public static Func isLogin = session => session as string ?? string.Empty;
SessionにはObjectが格納されているので、文字列でも数字でもクラスでも集合でも構いません.私の上のコードは文字列が格納されていると仮定しています.呼び出すとき、この匿名のメソッドを呼び出すように呼び出されます.


 if (string.IsNullOrEmpty(isLogin(Session["UserID"])))
 {
     Response.Redirect("../Login.aspx?m= , !");
 }
なぜstringを直接使用しないのかを説明できます.セシオンを直接判断するのか?では、Sessionであなたが判断していないこのkeyが空のポインタ異常を直接報告すると教えてあげます.
クラスなら?sessionが格納しているのは、例えばUserクラスであり、上のコードはこのような形式に変更されます.


 public static Func isLogin = session => session as User ?? new User() { UserID = -1};
返されるタイプがUserであるため、返される値を受信するために1つのUserクラスを使用することができ、その後の操作で直接使用することができます.


 User _user = isLogin(Session["UserID"]);
 if (_user.UserID == -1)
 {
     //
 }
このような方法がいいかどうか分かりませんが、このようなコードは、読みやすく、操作も便利だと思います.もっといい方法があれば、ご指導を惜しまないでください.