【问题标题】:asp.net role provider redirectasp.net 角色提供者重定向
【发布时间】:2013-11-18 00:52:37
【问题描述】:

谁能提供一个“如何在登录后将用户重定向到特定页面”uisng asp.net 角色提供程序的示例。

在我的登录页面上,我实现了 ILogOnView ,但它只将用户重定向到主页,而不是我在 web.config 文件中指定的页面。这是我在 web.config 文件中使用的代码。

来自 Logon.aspx 的代码

<asp:Login ID="Login1" runat="server" DestinationPageUrl="Templates.aspx"  OnAuthenticate="Login1_Authenticate">
                                </asp:Login>

<forms 
     cookieless="UseCookies" 
     defaultUrl="Templates.aspx"
         loginUrl="LogOn.aspx" 
     protection="All" 
     timeout="2880">
        </forms>

public partial class LogOn : System.Web.UI.Page, ILogOnView
{
    private LogOnPresenter presenter;

    protected void Page_Load(object sender, EventArgs e)
    {
        presenter = LogOnPresenter.Create(this);
    }


    protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)
    {
        if (Membership.ValidateUser(Login1.UserName, Login1.Password) == true)
        {
            Login1.Visible = true;
            Session["user"] = User.Identity.Name;
            FormsAuthentication.RedirectFromLoginPage(Login1.UserName, true);
        }
        else
        {
            Response.Write("Invalid Login");
        }
    }


    public void Redirect(string targetUrl)
    {
        //Response.Redirect("Templates.aspx");
    }

    protected void Login1_LoggedIn(object sender, EventArgs e)
    {
        Response.Redirect(Login1.DestinationPageUrl);
    }
}

欢迎提出任何建议。 谢谢和问候,

【问题讨论】:

    标签: asp.net redirect roleprovider


    【解决方案1】:

    如果您使用的是 ASP:LOGIN 控件,您可以指定“DestinationPageUrl”,它是登录成功时向用户显示的目标页面。此控件将驻留在“~/LogOn.aspx”

    <asp:Login ID="Login1" runat="server" DestinationPageUrl="~/Default.aspx" CssClass="membershipcontrol" />
    

    并将其添加到您的代码后面:

    Public Partial Class LogOn
        Inherits System.Web.UI.Page
    
        Protected Sub Login1Function(ByVal sender As Object, ByVal e As System.EventArgs) Handles Login1.LoggedIn
            Response.Redirect(Login1.DestinationPageUrl)
        End Sub
    
    End Class
    

    编辑:

    好的,您在第 17 行使用以下命令明确重定向用户:

    FormsAuthentication.RedirectFromLoginPage(Login1.UserName, true);
    

    如果您希望将它们发送到静态位置,您可以使用它来代替:

    Response.Redirect(Login1.DestinationPageUrl);
    

    【讨论】:

    • 非常感谢大卫,这太棒了。但是,在我的登录页面上实现 DestinationPageUrl 后,它仍然不会重定向到“Templates.aspx”。它将用户重定向到用户在登录前访问的任何页面。有什么建议吗?
    • 更新了答案以包含一些需要添加到代码隐藏中的代码。这应该覆盖“ReturnUrl”参数(如果存在)。
    • 亲爱的大卫,非常感谢您的解决方案。我已经这样做了,不幸的是它不会将我重定向到 tempalte.aspx。我也将我的服务器端代码添加到问题中。再次感谢。
    • 我更改了我的回复以更正“句柄”语句,ID 匹配至关重要,否则不会引发事件。您可以尝试在此函数中放置一个调试断点,以确保它被调用(或未被调用)并以调试模式启动应用程序吗?是否也可以在“Sub Login1_Authenticate()”中设置断点?
    • 在查看了您添加的完整代码隐藏后,您在第 17 行明确将用户重定向到使用这行代码的“ReturnUrl”。
    猜你喜欢
    • 1970-01-01
    • 2012-04-08
    • 2023-03-18
    • 2017-07-26
    • 2013-01-22
    • 2023-03-14
    • 1970-01-01
    • 2011-02-17
    • 2016-09-05
    相关资源
    最近更新 更多