อ้างอิงถึง ASP.NET 身份验证.感觉良好.贴出下列代码:
login.aspx HTML หรือ
1<%@ ภาษาเพจ = "c#" Codebehind = "02Login.aspx.cs" AutoEventWireup = "false" สืบทอด = "身份验证._02Login" %>
2<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 การเปลี่ยนผ่าน//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 <meta name="vs_defaultClientScript" content="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 <ทีดี>
18 <asp:label id="Label1" runat="server">用户名称:</asp:label></TD>
19 <ทีดี>
20 <asp:textbox id="tbName" runat="server" width="183px"></asp:textbox></TD>
21 <ทีดี>
22 <asp:requiredfieldvalidator id = "RequiredFieldValidator1" runat = "เซิร์ฟเวอร์" ErrorMessage = "用户名不能为空!" ControlToValidate = "tbName" ></asp:requiredfieldvalidator ></ TD >
23 </TR>
24 <TR>
25 <ทีดี>
26 <asp:label id="Label2" runat="server">密码:</asp:label></TD>
27 <ทีดี>
28 <asp:textbox id="tbPass" runat="server" width="183px"></asp:textbox></TD>
29 <ทีดี>
30 <asp:requiredfieldvalidator id = "RequiredFieldValidator2" runat = "เซิร์ฟเวอร์" ErrorMessage = "密码不能为空!" ControlToValidate = "tbPass" ></asp:requiredfieldvalidator ></ TD>
31 </TR>
32 <TR>
33 <TD><FONT face="宋体">是否保存คุกกี้</FONT></TD>
34 <ทีดี>
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="เซิร์ฟเวอร์" 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 </แบบฟอร์ม>
44 </ร่างกาย>
45</HTML>
login.aspx.cs代码如下
โมฆะส่วนตัว btnLoginBetter_Click (ผู้ส่งวัตถุ System.EventArgs e)
-
ถ้า (this.tbName.Text == "ผู้ดูแลระบบ" && this.tbPass.Text == "ผู้ดูแลระบบ")
-
ตั๋ว FormsAuthenticationTicket = ใหม่ FormsAuthenticationTicket(1,this.tbName.Text,DateTime.Now,DateTime.Now.AddMinutes(30),this.PersistCookie.Checked,"User");//创建一个验证票据
string cookieStr = FormsAuthentication.Encrypt(ticket); 进行加密
คุกกี้ HttpCookie = HttpCookie ใหม่ (FormsAuthentication.FormsCookieName,cookieStr); 创建一个cookie,cookie名为web.config设置的名,值为加密后的数据cookieStr,
ถ้า (this.PersistCookie.Checked)//判断用户是否选中保存cookie
cookie.Expires = ticket.Expiration;//获取cookie过期时间
cookie.Path = FormsAuthentication.FormsCookiePath;//设置cookie保存路径
Response.Cookies.Add(คุกกี้);
สตริง strRedirect;
strRedirect = คำขอ["ReturnUrl"];//取出返回url
ถ้า (strRedirect == null)
strRedirect = "Default.aspx";
Response.Redirect (strRedirect จริง);
-
อื่น
-
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: Absolute; TOP: 72px" runat="server">用户名称:</asp:Label>
<asp:Label id="Label2" style="Z-INDEX: 102; LEFT: 220px; POSITION: Absolute; 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="เซิร์ฟเวอร์" Text="注销" width="101px"></asp:Button></FONT>
</แบบฟอร์ม>
</ร่างกาย>
后置代码
โมฆะส่วนตัว Page_Load (ผู้ส่งวัตถุ System.EventArgs e)
-
this.lbUser.Text = User.Identity.Name;
ถ้า (User.IsInRole("ผู้ดูแลระบบ"))
this.lbSf.Text = "ผู้ดูแลระบบ";
อื่น
this.lbSf.Text = "ผู้ใช้";
}
Web 窗体设计器生成的代码#region Web 窗体设计器生成的代码
แทนที่การป้องกันโมฆะ OnInit (EventArgs e)
-
-
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
-
เตรียมใช้งานส่วนประกอบ();
ฐาน OnInit(e);
-
/***////// <สรุป>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </สรุป>
โมฆะส่วนตัว InitializeComponent()
-
this.btnLogout.Click += System.EventHandler ใหม่ (this.btnLogout_Click);
this.Load += System.EventHandler ใหม่ (this.Page_Load);
-
#endregion
โมฆะส่วนตัว btnLogout_Click (ผู้ส่งวัตถุ System.EventArgs e)
-
FormsAuthentication.SignOut();//注销票
Response.Redirect("login.aspx",true); 返回login.aspx页เลดี้
-
webconfig配置如下
<โหมดการรับรองความถูกต้อง = "แบบฟอร์ม">
<forms name=".SecurityDemo" loginUrl="login.aspx">//.SecurityDemo为cookie名,
</แบบฟอร์ม>
</การรับรองความถูกต้อง>
<การอนุญาต>
<deny users="?"/> // 拒绝所有匿名用户
<allow Roles="admins"/>//允许管理级别用户访问
</การอนุญาต>
自我感觉ASP写多了,一般是用session进行判断用户是否合法,但在一个ASP.NET项目中使用身份验证,基本上所有页的都要验证才能访问,感觉有点迁强.但可以在web.config页的对指定的页เลดี้设置权限,设置代码如下
<เส้นทางตำแหน่ง = "admin.aspx">
<system.เว็บ>
<การอนุญาต>
<ปฏิเสธผู้ใช้="?" -
</การอนุญาต>
</system.เว็บ>
</ตำแหน่ง>
如果只有几个页的设置如上代码,感觉还可以接受.但页的多了岂不是要把人累死呀..
可能是小的项目做多了,大项目没接触过.请高手给指点具体用途呀.不甚感激.
http://www.cnblogs.com/paleyyang/archive/2006/10/21/536147.html