我的网站中有四个不同的模块:客户、操作员、工程师和管理员。
当我当时单击登录按钮时,如果那是客户,则该页面应重定向到 customer.aspx。
ff工程师登录然后页面应该重定向到engineer.aspx等等..
我怎样才能做到这一点?
我想您正在使用带有 WebForms 的“普通”ASP.NET。在这种情况下(我再次假设),您的页面上有登录控件,如下所示:
<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");
}
您必须在表中再添加一列,其中存储了用户的用户名和密码。在新列中,您可以保存用户的角色。当用户输入正确的用户名和密码时,您可以获取他的角色并根据他的角色重定向用户。
例如:
如果您获取客户,那么您可以将用户重定向到 customer.aspx
并对其他角色进行同样的检查。