繁体   English   中英

我在ASP.net中登录时如何根据用户重定向页面?

[英]How to redirect the page according to user when I login in ASP.net?

我的网站中有四个不同的模块:客户,操作员,工程师和管理员。

如果当时我是客户,则单击登录按钮时,应将页面重定向到customer.aspx。

如果是工程师登录,则应将页面重定向到engineer.aspx,依此类推。

我该如何实现?

我想您正在将“普通” ASP.NET与WebForms一起使用。 在这种情况下(再次假设),您的页面上具有登录控件,如下所示:

<asp:login id="ctrlLogin" runat="server"></asp:login>

该控件公开了一些您可以使用的事件,其中之一在身份验证后被触发。 像这样设置您的登录控件:

<asp:login id="ctrlLogin" runat="server" onloggedin="OnLoggedIn">
</asp:login>

现在,您的C#代码添加方法OnLoggedIn

protected void OnLoggedIn(object sender, EventArgs e)
{
}

您可以在其中使用对Response.Redirect()的简单调用将其重定向到正确的页面。 最后一个问题是如何获得用户的“工作”,如果您使用带有角色的ASP.NET身份验证,则可以将用户设置为属于该角色(客户,操作员,工程师,管理员)。 实际上,一个用户可以具有多个角色,因此您可能需要搜索您感兴趣的角色。一种快速而肮脏的解决方案是具有以下功能:

private void RedirectToProperPage(params string[] roles)
{
    foreach (string role in roles)
    {
        if (Roles.IsUserInRole(role))
            Response.Redirect(String.Format("~/{0}.aspx", role));
    }
}

在您的OnLoggedInMethod您可以简单地执行以下操作:

protected void OnLoggedIn(object sender, EventArgs e)
{
    RedirectToProperPage("Admin", "Operator", "Engineer", "Customer");
}

如果使用的是Login控件,则它具有LoggedIn事件,您可以在用户登录后用来执行自定义逻辑。

您必须在表中再添加一列,用于存储用户名和密码。 在新列中,您可以保存用户角色。 当用户输入正确的用户名和密码时,您可以获取其角色并根据其角色重定向用户。

例如:

如果获取客户,则可以将用户重定向到customer.aspx

并检查其他角色。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM