0

ASP.NETを使用してページが読み込まれる前に、変数を確認して別のページにリダイレクトするにはどうすればよいですか?

私はライフサイクルを認識しており、PageInit()それは正しいように思えますが、VisualStudio内にエラーなしでコードを配置する場所を見つけることができないようです。

onpageinit=""ページ宣言の最初の行にinを入れることができません。私はそれをどこか別の場所に置くと思いますか?私のページ宣言は次のようになります。

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="dashboard.aspx.cs" Inherits="dashboard" MasterPageFile="~/Design.master" %>

これは、ページの読み込み時に実行したいコードです。

    // Check if the user is logged in, if not send them to the login page
    if (session.logged_in == false)
    {
        // Redirect the user to the login page
        Response.Redirect("login.aspx");

    }
4

4 に答える 4

2

Asp.Netメンバーシップについてお読みになることをお勧めします。次に、必要にMembershipProvider応じて、ユーザー要求の認証に関して必要な配管を処理する独自の実装を実装します。

メンバーシップの抽象化は非常に便利であり、独自のプロバイダーを実装することはそれほど難しくありません。

そうは言っても、認証を管理するためにセッションの値を本当に使用したい場合はApplication_PostAcquireRequestState、Global.asaxのメソッドにコードを入れてみることができます。そうすれば、アプリケーションへの(ほぼ)すべてのリクエストに対してコードが自動的に呼び出され、セッションが利用できる最初の利用可能なイベントでもあります(私が知る限り)。サンプル:

void Application_PostAcquireRequestState(object sender, EventArgs e)
{
    if (Session["LoggedUserName"] == null && !Request.Path.EndsWith("login.aspx"))
    {
        Response.Redirect("~/your/path/login.aspx");
    } 
}
于 2012-08-16T14:01:02.347 に答える
1

私はonpageinit属性を知りません。セッション変数は、ページのライフサイクルに依存しません。セッションはいつでも利用できます。常に同じマスターページを使用していると仮定してPre_Init、マスターページの後ろのコードにコードを挿入します。

これを行うには、コードビハインドにオーバーライドを追加します。

 protected override void OnPreInit(EventArgs e)
    {
        if (session.logged_in == false)
        {
          Response.Redirect("login.aspx", false);            
        }
    }
于 2012-08-16T13:50:08.753 に答える
1

ページのOnInitメソッドをオーバーライドする必要があります。これをすぐ上に配置します(順序は重要ではありませんが、編成は重要だと思います)。コードビハインドのPage_Loadイベント...

protected override void OnInit(EventArgs e)
{
    base.OnInit(e);

    // your code goes here
}

また、達成しようとしていることに応じて、FormsAuthenticationを調べることをお勧めします。これにより、安全なフォルダとログインページを指定するだけで、認証されていない場合、.NETは訪問者をログインページにキックします。

于 2012-08-16T14:11:05.467 に答える
-1

このコードをマスターページの任意の場所に配置して、変数を確認し、コンテンツページが読み込まれる前に別のページにリダイレクトできます。

protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);

        if (string.IsNullOrEmpty(Convert.ToString(Session["email"])) ||string.IsNullOrEmpty(Convert.ToString(Session["mobile"])))
        {
            Response.Redirect("Login.aspx");
        }
    }
于 2019-12-18T05:10:37.810 に答える