asp.net角色提供程序重定向

时间:2013-11-18 00:52:37

标签: asp.net redirect roleprovider

任何人都可以向我提供“如何在登录后将用户重定向到特定页面”的示例“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);
    }
}

欢迎任何建议。 谢谢&amp;的问候,

1 个答案:

答案 0 :(得分: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);