今天闲着無聊。想起了ASP.NET身份验证。感觉良好。贴出下列番号:
login.aspx HTML 代数値
1<%@ Page language="c#" Codebehind="02Login.aspx.cs" AutoEventWireup="false" Inherits="身份验证._02Login" %>
2<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
3<HTML>
4 <頭>
5 <title>02ログイン</title>
6 <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
7 <meta name="CODE_LANGUAGE" Content="C#">
8 <メタ名="vs_defaultClientScript" コンテンツ="JavaScript">
9 <meta name="vs_targetSchema" content=" http://schemas.microsoft.com/intellisense/ie5 ">
10 </頭>
11 <body MS_POSITIONING="GridLayout">
12 <form id="Form1" Method="post" runat="server">
13 <FONT face="宋体">
14 <TABLE id="Table1" style="Z-INDEX: 102; LEFT: 152px; WIDTH: 446px; POSITION: 絶対; TOP: 80px; HEIGHT: 72px"
15 cellSpacing="1" cellPadding="1" width="446" border="1">
16 <TR>
17 <TD>
18 <asp:label id="Label1" runat="server">ユーザー名:</asp:label></TD>
19 <TD>
20 <asp:textbox id="tbName" runat="server" width="183px"></asp:textbox></TD>
21 <TD>
22 <asp:requiredfieldvalidator id="RequiredFieldValidator1" runat="server" ErrorMessage="用户名は空にはできません!" ControlToValidate="tbName"></asp:requiredfieldvalidator></TD>
23 </TR>
24 <TR>
25 <TD>
26 <asp:label id="Label2" runat="server">秘密:</asp:label></TD>
27 <TD>
28 <asp:textbox id="tbPass" runat="server" width="183px"></asp:textbox></TD>
29 <TD>
30 <asp:requiredfieldvalidator id="RequiredFieldValidator2" runat="server" ErrorMessage="密码不可空!" ControlToValidate="tbPass"></asp:requiredfieldvalidator></TD>
31 </TR>
32 <TR>
33 <TD><FONT face="宋体">クッキーを保存するかどうか</FONT></TD>
34 <TD>
35 <asp:checkbox id="PersistCookie" runat="server"></asp:checkbox></TD>
36 <TD></TD>
37 </TR>
38 </表>
39 <asp:button id="btnLoginBetter" style="Z-INDEX: 101; LEFT: 288px; POSITION: 絶対; TOP: 240px"
40 runat="server" width="78px" Text="登录"></asp:button>
41 <asp:HyperLink id="HyperLink1" style="Z-INDEX: 103; LEFT: 456px; POSITION: 絶対; TOP: 240px"
42 runat="server" NavigateUrl="Default.aspx">ハイパーリンク</asp:HyperLink></FONT>
43 </form>
44 </ボディ>
45</HTML>
login.aspx.cs代码如下
private void btnLoginBetter_Click(オブジェクト送信者、System.EventArgs e)
{
if (this.tbName.Text == "管理者" && this.tbPass.Text == "管理者")
{
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1,this.tbName.Text,DateTime.Now,DateTime.Now.AddMinutes(30),this.PersistCookie.Checked,"User");//创建一个验证票紙
string cookieStr = FormsAuthentication.Encrypt(ticket);进行加密
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName,cookieStr); クッキーを作成、クッキー名は web.config 設定の名前、加密後のデータクッキー Str、
if (this.PersistCookie.Checked)// 判断用户かどうか选中クッキー
cookie.Expires = ticket.Expiration;//获取cookie过期時間
cookie.Path = FormsAuthentication.FormsCookiePath;//設置cookie保存路径
Response.Cookies.Add(cookie);
文字列strRedirect;
strRedirect = Request["ReturnUrl"];//取り出した戻りurl
if (strRedirect == null)
strRedirect = "Default.aspx";
Response.Redirect(strRedirect,true);
}
それ以外
{
Response.Write("<script>alert('帐号または密码错误!');self.location.href='02login.aspx'</script>");
}
}
Default.aspx HTML代コード
<body MS_POSITIONING="GridLayout">
<form id="Form1" Method="post" runat="server">
<FONT face="宋体">
<asp:Label id="Label1" style="Z-INDEX: 106; LEFT: 224px; POSITION: 絶対; TOP: 72px" runat="server">使用者名:</asp:Label>
<asp:Label id="Label2" style="Z-INDEX: 102; LEFT: 220px; POSITION: 絶対; TOP: 136px" runat="server">身份:</asp:Label>
<asp:Label id="lbUser" style="Z-INDEX: 103; LEFT: 350px; POSITION: 絶対; TOP: 79px" runat="server"></asp:Label>
<asp:Label id="lbSf" style="Z-INDEX: 104; LEFT: 355px; POSITION: 絶対; TOP: 133px" runat="server"></asp:Label>
<asp:Button id="btnLogout" style="Z-INDEX: 105; LEFT: 261px; POSITION: 絶対; TOP: 192px"
runat="server" Text="注销" width="101px"></asp:Button></FONT>
</form>
</body>
後置代
private void Page_Load(オブジェクト送信者、System.EventArgs e)
{
this.lbUser.Text = ユーザー.Identity.Name;
if (User.IsInRole("Admin"))
this.lbSf.Text = "管理者";
それ以外
this.lbSf.Text = "ユーザー";
代
コード#region Web ボディ デザイナーが生成した代コード
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: この調整は ASP.NET Web ボディ デザイナーに必要です。
//
InitializeComponent();
Base.OnInit(e);
}
/**//// <概要>
/// デバイスのサポートに必要な方法 - 不要な代码编辑器修正
/// このメソッドの内容。
/// </概要>
private void InitializeComponent()
{
this.btnLogout.Click += new System.EventHandler(this.btnLogout_Click);
this.Load += 新しい System.EventHandler(this.Page_Load);
}
#endregion
private void btnLogout_Click(オブジェクト送信者、System.EventArgs e)
{
FormsAuthentication.SignOut();//注销票
Response.Redirect("login.aspx",true);login.aspx 面を返す
}
webconfig構成は以下の通り
<認証モード="フォーム" >
<forms name=".SecurityDemo" loginUrl="login.aspx">//.SecurityDemo は cookie 名、
</forms>
</認証> <
認可>
<deny users="?"/> //拒否绝全て匿名用户
<allow role="admins"/>//允许管理级别用户访问
</認可>
私自身の感想ASP書き込みは、一般的にセッションがユーザーが合法であるかどうかを判断しますが、ASP.NETのページ内では個人認証を使用しており、基本的にすべての面で必要な認証が可能です。ただし、web.configで可能です。指定された面に対する設置制限、設置料金は次のようになります
<location path="admin.aspx">
<システム.ウェブ>
<認可>
<ユーザーの拒否=?" />
</認可>
</system.web>
</場所>
上掲書のように一つの面だけが配置されていれば、感覚は受け入れられますが、複数の面が人を蓄積させる必要はありません。
小さな目は多くのことを行っている可能性がありますが、大きな目は接触していません。
http://www.cnblogs.com/paleyyang/archive/2006/10/21/536147.html