ユーザーが Web サイトにログインできる認証 Cookie を作成しようとしています。
次のようなログインフォームがあります。
<asp:TextBox ID="txtUsername" runat="server" MaxLength="10" Text="Sam001" ></asp:TextBox>
<asp:TextBox ID="txtPassword" runat="server" MaxLength="10" Text="Pass01" ></asp:TextBox>
<asp:Label ID="status" runat="server" ></asp:Label>
<asp:Button CssClass="button" ID="Submit" runat="server" Text="Logga in" OnClick="Login_Click" />
そして、そのボタンはコード ビハインドでこれを行います。
protected void Login_Click(object sender, EventArgs e)
{
DbReader listData = new DbReader();
Employee tempEmp = null;
if ((tempEmp = listData.GetUser(txtUsername.Text, txtPassword.Text)) != null) // check if username and pw was correct
{
FormsAuthentication.SetAuthCookie(tempEmp.EID, false); // create auth cookie
Debug.WriteLine("auth cookie set for: " + tempEmp.EID);
if (FormsAuthentication.Authenticate(tempEmp.EID, txtPassword.Text)) // check if name and pass is valid
{
Debug.WriteLine("auth validation ok");
FormsAuthentication.RedirectFromLoginPage(tempEmp.EID, false); // redirect
status.Text = User.Identity.Name; // set status to the Name property of the auth cookie
}
else
{
status.Text = "failed to Authenticate";
}
}
else
{
status.Text = "failed to get user";
}
}
Web.config では次のようになります。
<authentication mode="Forms">
<forms name="LoggedInUser" loginUrl="~/Login.aspx" protection="All" timeout="10" path="/" />
</authentication>
いつも「認証に失敗しました」と表示されるのはなぜですか? ログインしたユーザーが特定のページにアクセスするために必要な認証 Cookie を作成したい場合、何が間違っていますか?