0

ASP.NET で単純なログイン機能を開発するという奇妙なシナリオに巻き込まれています。と の 2 つのページがありLoginPage.aspxますDefault.aspx。ユーザーがログイン ページで有効な資格情報を提供すると、デフォルト ページにリダイレクトされます。デフォルト ページの上にユーザー ログイン情報を表示したいので、次の HTML を追加しました。

<form id="Form1" runat="server">
<div id="demo_header" runat="server">

    <asp:Label ID="loggedinUsername" ForeColor="Black" runat="server"></asp:Label>
    <asp:LinkButton ID="logout" runat="server" Text="Logout!" ForeColor="Black" OnClick="Logout"></asp:LinkButton>
    ...
</div>
</form>

そして Default.aspx.cs で:

protected void Page_Load(object sender, EventArgs e)
{
if (Session["LoggedinUser"] != null)
        {
            loggedinUsername.Text = "Welcome " + Session["LoggedinUser"].ToString() + " ";
            logout.Visible = true;
            demo_header.Visible = false;
        }
        else
        {
            logout.Visible = false;
            demo_header.Visible = true;
        }
}

ユーザーが LoginPage.aspx で [ログイン] ボタンを押したときに実行されるコードを次に示します。

protected void LoginButton_Click(object sender, EventArgs e)
{
    if (LoginEmail.ToString() == string.Empty || LoginPassword.ToString() == string.Empty)
    {
        Session["RedirectReaasonFlag"] = "Credentials null";
        login_error_msg.Text = "Please Provide Email/Password!";
    }
    else 
    {
        UserStandard User = new UserStandard();
        User._Email = LoginEmail.Text;
        User._password = LoginPassword.Text;
        Dictionary<int, string> LoggedinUserData = User.AuthenticateUser(User);
        if (LoggedinUserData.Count == 1)
        {
            Session["LoggedinUserID"] = LoggedinUserData.ElementAt(0).Key;
            Session["LoggedinUser"] = LoggedinUserData.ElementAt(0).Value;
            Response.Redirect("Default.aspx");
        }
        else
            Session["RedirectReaasonFlag"]= "Invalid Login Attempt";
    }
}

しかし、どういうわけか、ユーザーがデフォルトページにリダイレクトされると、その名前とログアウトのハイパーリンクが表示されません。これは非常に単純な作業であり、この状況は私の頭を悩ませています。ここで私を助けてください。

ありがとう。

4

1 に答える 1