1

3 つの .ASPX ページがあります。彼らです

`Login.aspx`
`Agent.aspx` and 
`Scheduler.aspx`

ユーザーが資格情報を入力すると、ロールに基づいて、ログイン ページから Agent.aspx または Scheduler.aspx にリダイレクトされます。for each ページ内Page_Load()で、ユーザーの役割を再度確認します。条件が一致しない場合は、Login.aspx にリダイレクトされます。

は、次のPage_Load()ようにナビゲートすると呼び出されます。

ログイン -> エージェント エージェント ページからログアウトすると、ログイン ページにリダイレクトされますが、エージェント ページの URl を入力するとPage_Load()、Agent.aspx の内部が読み込まれません。間違いは何ですか?

ログインページ aspx ------

public partial class LOGIN : System.Web.UI.Page
{  
  protected void Page_Load(object sender, EventArgs e)
    { 
        txtUserName.Focus();
    }

    protected void btnLogin_Click(object sender, EventArgs e) 

    {
        bool validLogin = false;

   LoginHandler loginhandler = new LoginHandler();

    validLogin = loginhandler.IsValidUser(txtUserName.Text.Trim(),                        txtPassword.Text.Trim());
    int RoleId = loginhandler.FindRoleId(txtUserName.Text.Trim(), txtPassword.Text.Trim());
    if (validLogin)
    {               
        FormsAuthentication.RedirectFromLoginPage(txtUserName.Text.Trim(), false);
        if (RoleId == 1)
           Response.Redirect(Constant.GoToAgentView);
        if (RoleId == 2)
           Response.Redirect(Constant.GoToSchedulerView);
    }
     else
        Server.Transfer(Constant.GoLoginPage);


    }
 }

エージェント aspx---

 public partial class Agent : System.Web.UI.Page
    {
        CSBuss.Agent.AgentHandler agent = new CSBuss.Agent.AgentHandler();
        LoginHandler login = new LoginHandler();

        protected void Page_Load(object sender, EventArgs e)

        {

            string rolename = login.FindRoleName(User.Identity.Name);
            if (string.Compare(rolename, "Agent", false) == 0)
            {
                SuccessPanel.Visible = false;
                DisplayPanel.Visible = true;
                txtName.Focus();
                if (!IsPostBack)
                {
                    DropDownList1.DataSource = agent.GetCabType();
                    DropDownList1.DataTextField = Constant.DisplayCabType; // CabType to be displayed in the list items
                    DropDownList1.DataValueField = Constant.DisplayCabID; // CabId of the items displayed
                    DropDownList1.DataBind();

                }
            }
            else
                Server.Transfer(Constant.GoLoginPage);

        }
  }

PS : Web.config ファイルで Enableoutputcaching を false に設定し、Identity Impersonate を false に設定しました

4

2 に答える 2

2

Agent.aspx の追加のセキュリティ構成はありますか? ユーザーがこのページへのアクセスを認証されていないため、asp.net パイプラインは Page_Load を実行しないようです。

于 2012-12-05T10:30:44.600 に答える
0

コード ビハインドでキャッシュをクリアした後、Page_Load() に入ります。Response.Cache.SetCacheability(HttpCacheability.NoCache); を使用しました。これにより Page_Load() の問題が解決されました...しかし、User.identity.After に存在する値をクリアする方法がわかりません。Agent.aspx からログアウトすると、ログインにリダイレクトされます。Agent.aspx の URL を入力すると、以前に入力した値が user.identity に残っています... User.Identity の値をクリアするにはどうすればよいですか ..

ありがとう

于 2012-12-06T04:50:21.243 に答える