欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【asp.net里面的身份验证和授权】,下面是详细的分享!
asp.net里面的身份验证和授权
今天闲着无聊.想起来了ASP.NET身份验证.感觉良好.贴出下列代码:
login.aspx HTML代码
<%@ Page language="c#" Codebehind="02Login.aspx.cs" AutoEventWireup="false" Inherits="身份验证._02Login" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>02Login</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="javascript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<FONT face="宋体">
<TABLE id="Table1" style="Z-INDEX: 102; LEFT: 152px; WIDTH: 446px; POSITION: absolute; TOP: 80px; HEIGHT: 72px"
cellSpacing="1" cellPadding="1" width="446" border="1">
<TR>
<TD>
<asp:label id="Label1" runat="server">用户名称:</asp:label></TD>
<TD>
<asp:textbox id="tbName" runat="server" Width="183px"></asp:textbox></TD>
<TD>
<asp:requiredfieldvalidator id="RequiredFieldValidator1" runat="server" ErrorMessage="用户名不能为空!" ControlToValidate="tbName"></asp:requiredfieldvalidator></TD>
</TR>
<TR>
<TD>
<asp:label id="Label2" runat="server">密码:</asp:label></TD>
<TD>
<asp:textbox id="tbPass" runat="server" Width="183px"></asp:textbox></TD>
<TD>
<asp:requiredfieldvalidator id="RequiredFieldValidator2" runat="server" ErrorMessage="密码不能为空!" ControlToValidate="tbPass"></asp:requiredfieldvalidator></TD>
</TR>
<TR>
<TD><FONT face="宋体">是否保存Cookie</FONT></TD>
<TD>
<asp:checkbox id="PersistCookie" runat="server"></asp:checkbox></TD>
<TD></TD>
</TR>
</TABLE>
<asp:button id="btnLoginBetter" style="Z-INDEX: 101; LEFT: 288px; POSITION: absolute; TOP: 240px"
runat="server" Width="78px" Text="登录"></asp:button>
<asp:HyperLink id="HyperLink1" style="Z-INDEX: 103; LEFT: 456px; POSITION: absolute; TOP: 240px"
runat="server" NavigateUrl="Default.aspx">HyperLink</asp:HyperLink></FONT>
</form>
</body>
</HTML>
login.aspx.cs代码如下
private void btnLoginBetter_Click(object sender, System.EventArgs e)
{
if (this.tbName.Text=="admin" && this.tbPass.Text=="admin")
{
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);
//创建一个cookie,cookie名为web.config设置的名,值为加密后的数据cookieStr,
if (this.PersistCookie.Checked)//判断用户是否选中保存cookie
cookie.Expires=ticket.Expiration;//获取cookie过期时间
cookie.Path=FormsAuthentication.FormsCookiePath;//设置cookie保存路径
Response.Cookies.Add(cookie);
string strRedirect;
strRedirect=Request["ReturnUrl"];//取出返回url
if (strRedirect==null)
strRedirect="Default.aspx";
Response.Redirect(strRedirect,true);
}
else
{
Response.Write("<script>alert('帐号或密码错误!');self.location.href='http://www.chinaz.com/program/2006/1109/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: absolute; TOP: 79px" runat="server"></asp:Label>
<asp:Label id="lbSf" style="Z-INDEX: 104; LEFT: 355px; POSITION: absolute; TOP: 133px" runat="server"></asp:Label>
<asp:Button id="btnLogout" style="Z-INDEX: 105; LEFT: 261px; POSITION: absolute; TOP: 192px"
runat="server" Text="注销" Width="101px"></asp:Button></FONT>
</form>
</body>
后置代码
private void Page_Load(object sender, System.EventArgs e)
{
this.lbUser.Text=User.Identity.Name;
if (User.IsInRole("Admin"))
this.lbSf.Text="Admin";
else
this.lbSf.Text="User";
}
Web 窗体设计器生成的代码#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.btnLogout.Click +=new System.EventHandler(this.btnLogout_Click);
this.Load +=new System.EventHandler(this.Page_Load);
}
#endregion
private void btnLogout_Click(object sender, System.EventArgs e)
{
FormsAuthentication.SignOut();//注销票
Response.Redirect("login.aspx",true);返回login.aspx页面
}
webconfig配置如下
<authentication mode="Forms" >
<forms name=".SecurityDemo" loginUrl="login.aspx">//.SecurityDemo为cookie名,
</forms>
</authentication>
<authorization>
<deny users="?"/> //拒绝所有匿名用户
<allow roles="admins"/>//允许管理级别用户访问
</authorization>
自我感觉ASP写多了,一般是用session进行判断用户是否合法,但在一个ASP.NET项目中使用身份验证,基本上所有页面都要验证才能访问,感觉有点迁强.但可以在web.config页面对指定的页面设置权限,设置代码如下
<location path="admin.aspx">
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</location>
如果只有几个页面设置如上代码,感觉还可以接受.但页面多了岂不是要把人累死呀..
可能是小的项目做多了,大项目没接触过.请高手给指点具体用途呀.不甚感激
以上所分享的是关于asp.net里面的身份验证和授权,下面是编辑为你推荐的有价值的用户互动:
相关问题:ASP.NET的身份验证和授权方式有那些?
答:说上两点吧 网络应用程序开发一般是基于 c/s模式的.客户端和服务器要保持链接状态.你要维护的也有服务端及客户端 web开发 一般是你要什么就向服务器申请,数据交换完了也就完了,不需要要一直保持链接. 从维护角度来看,一般只需要要开发服务器端就好 >>详细
相关问题:ASP.NET的身份验证方式有哪些
答:[Forms 身份验证] 通过其可将没有通过身份验证的请求重定向到使用 HTTP 客户端重定向的 HTML 窗体的系统。用户提供凭据并提交该窗体。如果应用程序验证该请求,系统就会发出包含凭据或密钥的 Cookie 以重新获取该标识。后续的请求在请求标题中随... >>详细
相关问题:ASP.NET中的身份验证有那些?
答:ASP.NET 身份验证 身份验证是从用户获取名称和密码等标识凭证并根据某些机构验证这些凭据的过程。如果凭据有效,则提交该凭据的实体被视为通过身份验证的标识。一旦标识通过了身份验证,则身份验证过程会确定该标识是否可以访问给定的资源。 ASP... >>详细
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
