ASP.NETマスターのPage_Initイベントページに、ユーザーがコンテンツページへのアクセスを許可されているかどうかを確認し、許可されていない場合はログインページにリダイレクトするコードがあります。このコードは、チェック自体に関しては正常に機能します。ただし、上記のリダイレクト後もコンテンツのPage_Loadイベントが発生することを発見しました。これにより、ユーザーがログインしていて特定の変数が設定されていると想定しているページで問題が発生しています。
これはマスターページコードです(簡略化)
Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
...
If Access_Level > User_Level_ID Then
Response.Redirect("~/login.aspx", False)
End If
End Sub
上記のテストは正常に機能し、リダイレクト行が実行されますが、以下のコードが実行されて実行されるまでは有効になりません。
これはコンテンツページコードです
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim Rec_IDs As New List(Of String)
Rec_IDs = Session("Rec_IDs")
lblCount.Text = String.Format("You have {0} records in your cart", CType(Rec_IDs.Count, String)) 'this gives an error if Session("Rec_IDs") is null
End Sub
各コンテンツページにコードを入れて、ユーザーがログイン/承認されているかどうかを確認できることはわかっていますが、可能であれば、すべてを1か所から制御したいと思いました。
私は何か間違ったことをしていますか?マスターページがチェックを行う場所であると言っているページをたくさん読みました。
ありがとう。:-)