我使用默认模板在 Visual Studio 2012 中创建了一个项目。我希望每个用户都能够登录并被重定向到不同的页面。我已经实现了适用于首次用户登录的代码。但是,如果我注销,然后使用其他用户登录,则该用户不会被重定向。当我调试应用程序时,在第二次登录时,它在用户名上显示为空白。我已将代码放在 page_load 事件中,是否有更好的事件或更好的方法来实现此代码?
var Username = Page.User.Identity.Name;
if (Username == "You" || Username == "you")
{
Response.Redirect("~/you.aspx");
}
else if (Username == "Me" || Username == "me")
{
Response.Redirect("~/me.aspx");
}
else if (Username == "Them" || Username == "them")
{
Response.Redirect("~/Them.aspx");
}
我也试过这段代码,但是没有一个用户在登录后被重定向。在我看来,代码的 aspx 部分没有在或@登录后触发:
代码隐藏:
public partial class Login : Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void LoggedIn(object sender, EventArgs e)
{
//This is redirect the user to their page
switch (Page.User.Identity.Name.ToLower())
{
case "me":
Response.Redirect("~/me.aspx");
break;
case "you":
Response.Redirect("~/you.aspx");
break;
case "them":
Response.Redirect("~/them.aspx");
break;
}
}
protected void Unnamed6_Click(object sender, EventArgs e)
{
}
}
此处的 Aspx 代码:
<%@ Page Title="Log in" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Login.aspx.cs" Inherits="ChoresLists.Account.Login" %>
<%@ Register Src="~/Account/OpenAuthProviders.ascx" TagPrefix="uc" TagName="OpenAuthProviders" %>
<asp:Content runat="server" ID="BodyContent" ContentPlaceHolderID="MainContent">
<hgroup class="title">
<h1><%: Title %>.</h1>
</hgroup>
<section id="loginForm">
<h2>Use a local account to log in.</h2>
<asp:Login runat="server" ViewStateMode="Disabled" RenderOuterTable="false" OnLoggedIn="LoggedIn">
<LayoutTemplate>
<p class="validation-summary-errors">
<asp:Literal runat="server" ID="FailureText" />
</p>
<fieldset>
<legend>Log in Form</legend>
<ol>
<li>
<asp:Label runat="server" AssociatedControlID="UserName">User name</asp:Label>
<asp:TextBox runat="server" ID="UserName" />
<asp:RequiredFieldValidator runat="server" ControlToValidate="UserName" CssClass="field-validation-error" ErrorMessage="The user name field is required." />
</li>
<li>
<asp:Label runat="server" AssociatedControlID="Password">Password</asp:Label>
<asp:TextBox runat="server" ID="Password" TextMode="Password" />
<asp:RequiredFieldValidator runat="server" ControlToValidate="Password" CssClass="field-validation-error" ErrorMessage="The password field is required." />
</li>
<li>
<asp:CheckBox runat="server" ID="RememberMe" />
<asp:Label runat="server" AssociatedControlID="RememberMe" CssClass="checkbox">Remember me?</asp:Label>
</li>
</ol>
<asp:Button runat="server" CommandName="Login" Text="Log in" OnClick="Unnamed6_Click" />
</fieldset>
</LayoutTemplate>
</asp:Login>
<p>
<%--<asp:HyperLink runat="server" ID="RegisterHyperLink" ViewStateMode="Disabled">Register</asp:HyperLink>
if you don't have an account.--%>
</p>
</section>
<section id="socialLoginForm">
<%--<h2>Use another service to log in.</h2>
<uc:OpenAuthProviders runat="server" ID="OpenAuthLogin" />--%>
<asp:Image ID="LoginImage" runat="server" ImageUrl="~/Images/102_0273.png" Width="450px" />
</section>
</asp:Content>
最佳答案
嘿嘿嘿你为什么使用:
if (Username == "You" || Username == "you")
{
Response.Redirect("~/you.aspx");
}
if (Username == "Me" || Username == "me")
{
Response.Redirect("~/me.aspx");
}
if (Username == "Them" || Username == "them")
{
Response.Redirect("~/Them.aspx");
}
而不是使用:
if (Username == "You" || Username == "you")
{
Response.Redirect("~/you.aspx");
}
else if (Username == "Me" || Username == "me")
{
Response.Redirect("~/me.aspx");
}
else if (Username == "Them" || Username == "them")
{
Response.Redirect("~/Them.aspx");
}
关于c# - 在登录页面中使用页面用户身份名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20843573/