今天闲着无聊.想起来了ASP.NET身份验证.感觉良好.贴出下列代码:
login.aspx HTML대신
1<%@ 페이지 언어="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 <메타 이름="CODE_LANGUAGE" Content="C#">
8 <meta name="vs_defaultClientScript" content="JavaScript">
9 <meta name="vs_targetSchema" content=" http://schemas.microsoft.com/intellisense/ie5 ">
10 </HEAD>
11 <body MS_POSITIONING="GridLayout">
12 <form id="Form1" method="post" runat="서버">
13 <FONT face="宋体">
14 <TABLE id="Table1" style="Z-INDEX: 102; 왼쪽: 152px; WIDTH: 446px; 위치: 절대; 위쪽: 80px; 높이: 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; 왼쪽: 288px; 위치: 절대; 위쪽: 240px"
40 runat="server" Width="78px" Text="登录"></asp:button>
41 <asp:HyperLink id="HyperLink1" style="Z-INDEX: 103; 왼쪽: 456px; 위치: 절대; 위쪽: 240px"
42 runat="서버" NavigateUrl="Default.aspx">HyperLink</asp:HyperLink></FONT>
43 </form>
44 </body>
45</HTML>
login.aspx.cs代码如下
개인 무효 btnLoginBetter_Click(개체 전송자, System.EventArgs e)
{
if (this.tbName.Text == "관리자" && this.tbPass.Text == "관리자")
{
FormsAuthenticationTicket 티켓 = 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);创建一个cookie,cookiename为web.config设置的name,值为加密后的数据cookieStr,
if (this.PersistCookie.Checked)//判断사용户是否选中保存cookie
cookie.Expires = ticket.Expiration;//获取cookie过期时间
cookie.Path = FormsAuthentication.FormsCookiePath;//설명cookie保存路径
응답.쿠키.추가(쿠키);
문자열 strRedirect;
strRedirect = 요청["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="서버">
<FONT 얼굴="宋体">
<asp:Label id="Label1" style="Z-INDEX: 106; 왼쪽: 224px; POSITION: 절대; TOP: 72px" runat="server">사용 이름:</asp:Label>
<asp:Label id="Label2" style="Z-INDEX: 102; 왼쪽: 220px; POSITION: 절대; TOP: 136px" runat="server">身份:</asp:Label>
<asp:Label id="lbUser" style="Z-INDEX: 103; 왼쪽: 350px; 위치: 절대; TOP: 79px" runat="server"></asp:Label>
<asp:Label id="lbSf" style="Z-INDEX: 104; 왼쪽: 355px; 위치: 절대; TOP: 133px" runat="server"></asp:Label>
<asp:Button id="btnLogout" style="Z-INDEX: 105; 왼쪽: 261px; 위치: 절대; 위쪽: 192px"
runat="server" Text="注销" Width="101px"></asp:Button></FONT>
</form>
</body>
后置代码
개인 무효 Page_Load(개체 전송자, System.EventArgs e)
{
this.lbUser.Text = 사용자.ID.이름;
if (User.IsInRole("관리자"))
this.lbSf.Text = "관리자";
또 다른
this.lbSf.Text = "사용자";
}
웹 窗体设计器生成的代码#region Web 窗体设计器生成的代码
보호된 void OnInit(EventArgs e) 재정의
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的입니다.
//
초기화구성요소();
base.OnInit(e);
}
/**//// <요약>
/// 设计器支持所需적 방법 - 不要使用代码编辑器修改
/// 방법은 간단합니다.
/// </summary>
개인 무효 초기화 구성 요소()
{
this.btnLogout.Click += new System.EventHandler(this.btnLogout_Click);
this.Load += new 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为cookiename,
</forms>
</인증>
<인증>
<deny users="?"/> //유저 이름 사용
<allow Role="admins"/>//允许管理级别用户访问
</인증>
우리는 ASP에서 더 많은 정보를 얻기 위해 세션을 사용하고 있습니다. 이제 web.config에 있습니다.页face对指 마음에 드는 页면设置权限,设置代码如下
<위치 경로="admin.aspx">
<시스템.웹>
<인가>
<사용자 거부="?" />
</인증>
</system.web>
</위치>
如果只有几个页face设置如上代码, 感觉还可以接受.但页면多了岂不是要把人累死呀..
可能是的项目做多了, 大项目没接触过.请高手给指点具体用途呀.不甚感激.
http://www.cnblogs.com/paleyyang/archive/2006/10/21/536147.html