出处:
http://msdn.microsoft.com/zh-cn/library/xdt4thhy.aspx在该示例的方案中,用户请求一个受保护的资源,即名为 Default.aspx 的页。只有一个用户可以访问此受保护的资源:jchen@contoso.com,其密码为“37Yj*99P”。该用户名和密码已硬编码到 Logon.aspx 文件中。该示例需要三个文件:Web.config 文件、名为 Logon.aspx 的页以及名为 Default.aspx 的页。这些文件位于应用程序根目录中。
一、配置Web.config
Code
<system.web>
<authentication mode="Forms">
<forms loginUrl="logon.aspx" name=".ASPXFORMSAUTH">
</forms>
</authentication>
<authorization>
<deny users="?" />
</authorization>
</system.web> 二、根目录下建立logon.aspx文件
Code
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Web.Security" %>
<script runat="server">
void Logon_Click(object sender, EventArgs e)
{
if ((UserEmail.Text == "jchen@contoso.com") &&
(UserPass.Text == "37Yj*99Ps"))
{
FormsAuthentication.RedirectFromLoginPage
(UserEmail.Text, Persist.Checked);
}
else
{
Msg.Text = "Invalid credentials. Please try again.";
}
}
</script>
<html>
<head id="Head1" runat="server">
<title>Forms Authentication - Login</title>
</head>
<body>
<form id="form1" runat="server">
<h3>
Logon Page</h3>
<table>
<tr>
<td>
E-mail address:</td>
<td>
<asp:TextBox ID="UserEmail" runat="server" /></td>
<td>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1"
ControlToValidate="UserEmail"
Display="Dynamic"
ErrorMessage="Cannot be empty."
runat="server" />
</td>
</tr>
<tr>
<td>
Password:</td>
<td>
<asp:TextBox ID="UserPass" TextMode="Password"
runat="server" />
</td>
<td>
<asp:RequiredFieldValidator ID="RequiredFieldValidator2"
ControlToValidate="UserPass"
ErrorMessage="Cannot be empty."
runat="server" />
</td>
</tr>
<tr>
<td>
Remember me?</td>
<td>
<asp:CheckBox ID="Persist" runat="server" /></td>
</tr>
</table>
<asp:Button ID="Submit1" OnClick="Logon_Click" Text="Log On"
runat="server" />
<p>
<asp:Label ID="Msg" ForeColor="red" runat="server" />
</p>
</form>
</body>
</html> 三、建立Default.aspx
Code
<%@ Page Language="C#" %>
<html>
<head>
<title>Forms Authentication - Default Page</title>
</head>
<script runat="server">
void Page_Load(object sender, EventArgs e)
{
Welcome.Text = "Hello, " + Context.User.Identity.Name;
}
void Signout_Click(object sender, EventArgs e)
{
FormsAuthentication.SignOut();
Response.Redirect("Logon.aspx");
}
</script>
<body>
<h3>
Using Forms Authentication</h3>
<asp:Label ID="Welcome" runat="server" />
<form id="Form1" runat="server">
<asp:Button ID="Submit1" OnClick="Signout_Click"
Text="Sign Out" runat="server" /><p>
</form>
</body>
</html> 此页显示用户的已通过身份验证的标识,该标识是由
FormsAuthentication 类设置的,并作为
Context.User.Identity.Name 属性在 ASP.NET 页中提供。
“注销”按钮的
Click 处理程序包含具有如下作用的代码:调用
SignOut 方法以清除用户标识并移除身份验证票证 (Cookie)。然后将用户重定向到登录页。