c# - 在登录页面中使用页面用户身份名称

标签 c# asp.net redirect authentication

我使用默认模板在 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/

相关文章:

C# Switch If 条件来扩展 switch case

c# - Restsharp 请求将 "Argument 1: cannot convert from ' RestSharp.Method' 提供给 'string?'“错误

c# - 创建动态程序集版本,包括日期和随机修订号

javascript - 使用 JavaScript 书签打开当前打开站点的新网页

c# - 在 C# 中反序列化之前从 JSON 字符串中删除非法字符

c# - 将多个控件放入更新面板的正确方法是什么?

c# - ObjectContext 实例已被释放,不能再用于需要连接的操作。在引用表中

node.js - .htaccess 路由到 Node App

javascript - 如何从其他网址自动重定向?

C# Lucene 获取所有索引