1

我有 3 个 .ASPX 页面。他们是

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

用户输入凭据后,他会根据自己的角色从登录页面定向到 Agent.aspx 或 Scheduler.aspx。在Page_Load()每个页面中,我再次检查用户的角色。如果条件不匹配,他将被重定向回 Login.aspx。

Page_Load()我这样导航时调用:

登录-> 代理,如果我从代理页面注销,我会被重定向到登录页面,但现在如果我进入代理页面的Page_Load()URl,则不会加载 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().. 这解决了 Page_Load() 的问题......但我无法弄清楚如何清除 User.identity 中存在的值。在我从 Agent.aspx 注销并且我被重定向到登录之后。现在,如果我输入 Agent.aspx 的 url,我之前输入的值仍然存在于 user.identity...我如何清除 User.Identity 中的值..

谢谢

于 2012-12-06T04:50:21.243 回答