1.ASP.NET的安全模式
Windows身份验证:IIS验证,在内联网中很实用;
Passport身份验证:微软集中式验证,一次登录访问所有成员站点,但是收费;
Form窗体验证:验证账号/密码,Web编程中最佳最流行的验证方式;
None验证:ASP.NET自己根本不执行身份验证,完全依赖IIS身份验证;
关于认证和授权机制:
认证是用户确定身份的过程,在用户通过身份验证后,开发人员就可以确定该用户是否有权继续操作,如果没有身份验证,就不能进入实体的授权;
授权是确定已验证的用户是否有权访问程序中某个部分,某个点或只访问应用程序提供的特定数据集;
1.1创建项目--禁止陌生用户登录
Denglu.aspx页面代码,以及登录按钮后台代码:
<body> <form id="form1" runat="server"> <div> <asp:Label ID="Label1" runat="server" Text="帐号:"></asp:Label> <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> <br /> <asp:Label ID="Label2" runat="server" Text="密码:"></asp:Label> <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox> <br /> <asp:Button ID="Button1" runat="server" Text="登陆" onclick="Button1_Click" style="height: 21px" /> </div> </form> </body>
protected void Button1_Click(object sender, EventArgs e) { string name = TextBox1.Text; string pwd = TextBox2.Text; if (name == "vip" && pwd == "123456") { FormsAuthentication.RedirectFromLoginPage(name, false); } else if (name == "pp" && pwd == "123456") { Response.Redirect("PuTong.aspx"); } }
Web.config页面需要添加如下配置文件:
<!--设置访问权限--> <location path="admin"> <system.web> <authorization> <allow users="admin"/> <deny users="*"/> </authorization> </system.web> </location>
<authentication mode="Forms"> <!--defaultUrl:验证成功后,要跳转的页面 loginUrl:验证帐号密码--> <forms loginUrl="Denglu.aspx" defaultUrl="vip.aspx"> </forms> </authentication> <authorization> <!--禁止陌生人登录--> <deny users="?"/> </authorization>
其他页面内容比如PuTong.asp:<div> 普通用户登录页面! </div>
ShouYe.aspx:<div> 这是首页啊! </div>
vip.aspx: <div> 这是vip页面! </div>
执行结果:
如果输入其它帐号则不现实:
1.1.1密码加密
Clear:密码存储为明文。用户的密码直接与这个值比较。
MD5:密码使用散列摘要进行存储。使用MD5算法进行散列,再与这个值进行相等比较。这个算法比SHA1的性能好。
MD5:密码使用散列摘要进行存储。使用MD5算法进行散列,再与这个值进行相等比较。这个算法比SHA1的性能好。
SHA1:密码使用 SHA1散列摘要来存储。在验证证书时,用户 密码使用S HA1算法进行散列,再与这个值进行相等比较。这个算法的安全性最高。
Web.config页面需要添加如下配置文件:
<authentication mode="Forms"> <!--defaultUrl:验证成功后,要跳转的页面 loginUrl:验证帐号密码--> <forms loginUrl="Denglu.aspx" defaultUrl="vip.aspx"> </forms> </authentication> <authorization> <!--禁止陌生人登录--> <deny users="?"/> </authorization>
并在<form></form>里添加:
<credentials passwordFormat="Clear"> <user name="admin" password="admin"/> </credentials>
Denglu.aspx.cs页面代码:
protected void Button1_Click(object sender, EventArgs e) { string name = TextBox1.Text; string pwd = TextBox2.Text; if (FormsAuthentication.Authenticate(name, pwd)) { Response.Write(FormsAuthentication.HashPasswordForStoringInConfigFile(pwd, "MD5")); } //if (name == "vip" && pwd == "123456") //{ // FormsAuthentication.RedirectFromLoginPage(name, false); //} //else if (name == "pp" && pwd == "123456") //{ // Response.Redirect("PuTong.aspx"); //} }
执行结果: