下面是关于“C#中FormsAuthentication用法实例”的完整攻略。
一、什么是FormsAuthentication
FormsAuthentication 是 ASP.NET 提供的一种 Forms 身份验证机制,它使用基于 Cookie 的认证方式来验证用户身份。
在使用 FormsAuthentication 时我们需要进行以下几步:
-
创建用户验证后存储到 Cookie 里的票据(token)。该票据包括用户标识(userid)等用户信息。
-
询问 ASP.NET 是否已验证用户。
-
对于需要验证的页面,反射的检查用户票据是否存在。
二、如何使用FormsAuthentication
在使用 FormsAuthentication 时,我们可以按照以下几个步骤进行操作:
1. 向 Web.config 文件中添加以下代码:
<configuration>
<appSettings>
<add key="ValidationKey" value="你的密钥" />
</appSettings>
<system.web>
<authentication mode="Forms" />
<authorization>
<deny users="?" />
</authorization>
</system.web>
<system.webServer>
<modules>
<remove name="FormsAuthenticationModule" />
<add name="FormsAuthenticationModule" type="System.Web.Security.FormsAuthenticationModule" />
</modules>
<handlers>
<remove name="FormsAuthentication" />
<add name="FormsAuthentication" path="*.aspx" verb="GET,HEAD,POST" type="System.Web.Security.FormsAuthenticationModule" preCondition="integratedMode" />
</handlers>
</system.webServer>
</configuration>
2. 对用户进行身份验证
我们可以像下面这样,建立登录页面,将用户名和密码通过 Post 方式传递给服务器端进行验证,并创建一个身份验证票证:
protected void btnSubmit_Click(object sender, EventArgs e)
{
string userName = txtUserName.Text.Trim();
string password = txtPassword.Text.Trim();
// 此处进行验证,验证成功后创建一个票证
if (userName == "user" && password == "123")
{
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
1, // version
userName, // user name
DateTime.Now, // issue time
DateTime.Now.AddMinutes(30), // expires
false, //persist
"your custom data"); //other data
string encTicket = FormsAuthentication.Encrypt(ticket);
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket);
Response.Cookies.Add(cookie);
Response.Redirect("~/Default.aspx");
}
else
{
lblMsg.Text = "用户名或密码错误!";
}
}
3. 在需要验证的页面上进行验证
我们可以在需要验证的页面上,使用以下方法进行身份验证:
if (!Request.IsAuthenticated)
{
Response.Redirect("Login.aspx");
}
4. 退出登录
我们可以在退出登录或注销的方法中,删除票证即可退出登录。
FormsAuthentication.SignOut();
三、示例说明
示例一:形式简单的登录页面
以 Windows Form 程序为例,在登录窗口上设计两个文本控件(输入用户名和密码)、一个按钮,以及一个标签控件。
在输入用户名和密码后,单击“登录”按钮,如果用户名和密码完成一致,将跳转到本项目中的 Default.aspx 默认页面。
登录窗口的代码如下:
private void btnLogin_Click(object sender, EventArgs e)
{
string userName = txtUserName.Text.Trim();
string password = txtPassword.Text.Trim();
// 此处进行验证,验证成功后创建一个票证
if (userName == "user" && password == "123")
{
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
1, // version
userName, // user name
DateTime.Now, // issue time
DateTime.Now.AddMinutes(30), // expires
false, //persist
"your custom data"); //other data
string encTicket = FormsAuthentication.Encrypt(ticket);
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket);
Response.Cookies.Add(cookie);
Response.Redirect("~/Default.aspx");
}
else
{
lblMsg.Text = "用户名或密码错误!";
}
}
示例二:ASP.NET Web应用
如果你正在编写一个 ASP.NET 的 Web 应用程序,可以按照以下步骤来使用 FormAuthentication:
- 在 Web.config 文件中添加以下内容:
<configuration>
<system.web>
<authentication mode="Forms" >
<forms name=".MyFormAuthentication" loginUrl="~/Login.aspx" timeout="30" slidingExpiration="true"></forms>
</authentication>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</configuration>
- 在 Login.aspx 文件中添加以下内容:
protected void btnSubmit_Click(object sender, EventArgs e)
{
string userName = txtUserName.Text.Trim();
string password = txtPassword.Text.Trim();
// 此处进行验证,验证成功后创建一个票证
if (userName == "user" && password == "123")
{
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
1, // version
userName, // user name
DateTime.Now, // issue time
DateTime.Now.AddMinutes(30), // expires
false, //persist
"your custom data"); //other data
string encTicket = FormsAuthentication.Encrypt(ticket);
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket);
Response.Cookies.Add(cookie);
Response.Redirect(FormsAuthentication.DefaultUrl);
}
else
{
lblMsg.Text = "用户名或密码错误!";
}
}
- 在需要验证的页面中进行验证:
if (User.Identity.IsAuthenticated)
{
//获取当前用户标识
string userName=User.Identity.Name;
}
else
{
Response.Redirect("~/Login.aspx");
}
这就是使用 FormsAuthentication 的简单示例,它使得开发人员可以轻易地构建身份验证和授权应用程序。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#中FormsAuthentication用法实例 - Python技术站