1

我一直在这里测试示例代码http://mywsat.codeplex.com/

在他们的示例中,他们有不同的按钮来使用单独的链接登录admin页面或页面members

但是,我正在尝试使用指向登录页面的单个链接,并且在用户登录后使用代码隐藏重定向到相关页面。登陆页面需要登录,但所有角色都可以查看规则中设置的此页面。

登陆页面.aspx:

protected void Page_Load(object sender, EventArgs e)
    {
        string redirectPath;
        string pagePath = Request.AppRelativeCurrentExecutionFilePath;
        if (Page.User.IsInRole("Administrator"))
        {
            //Admin
            redirectPath = "~/admin/Default.aspx";
            if (redirectPath != pagePath)
            {
                Response.Redirect(redirectPath);
            }
        }
        else if (Page.User.IsInRole("Member"))
        {
            //Members
            redirectPath = "~/members/Default.aspx";
            if (redirectPath != pagePath)
            {
                Response.Redirect(redirectPath);
            }
        }
        else if (Page.User.IsInRole("Trial"))
        {
            //Trial
            redirectPath = "~/trial/Default.aspx";
            if (redirectPath != pagePath)
            {
                Response.Redirect(redirectPath);
            }
        }
        else
        {
            //Non member
            redirectPath = "~/Default.aspx";
            if (redirectPath != pagePath)
            {
                Response.Redirect(redirectPath);
            }
        }
    }

问题是 Page_Load 事件立即触发,然后login-with-captcha.ascx在事件触发后启动。

所以然后我将代码移动到登录表单login-with-captcha.ascx.cs以进行重定向, e.Authenticated = true;但它只是login-with-captcha.ascx在无限循环中重定向回

登录验证码.ascx.cs:

       // Next, determine if the user's username/password are valid
        if (Membership.ValidateUser(loginUsername, loginPassword))
        {
            e.Authenticated = true;
            //tried redirecting from here based on role!
        }
        else
        //............

验证用户后如何从登录页面重定向?我怀疑这可能与回发有关,但需要一些帮助

4

1 回答 1

1

您可以尝试将以下内容添加为 Page_Load 中的第一行,看看是否有帮助?如果它是由触发回发事件(例如按钮单击)引起的,这可能会防止无限循环问题。

if (IsPostBack) return;
于 2013-08-09T19:10:03.470 回答