Step 1:新建数据库(库:MyForms ;表:users ;字段:ID,userName, userPwd);
Step 2:新建网站,web.config 的文件全部代码如下:
<?xml version="1.0"?> <configuration> <appSettings/> <connectionStrings/> <system.web> <compilation debug="true"/> <sessionState cookieless="AutoDetect"/> <!--解决当浏览器端禁用Cookie时--> <authentication mode="Forms"> <forms name="CookieName" loginUrl="login.aspx" protection="All"></forms> <!--loginUrl为登录面URL,如果没有身份验证Cookie,客户端将被重定向到此URL--> </authentication>
<!--配置文件中,如果配置角色有allow项要放在deny项的前面,而users要配置为*,而不是? 参考文章:http://www.jb51.net/article/21146.htm --> <authorization> <deny users="?"/> </authorization> <customErrors mode="On" defaultRedirect="GenericErrorPage.htm"> <error statusCode="403" redirect="NoAccess.htm" /> <error statusCode="404" redirect="FileNotFound.htm" /> </customErrors> </system.web> </configuration>
Step 3:添加一个 login.aspx 页面;拖2个 TextBox ,1个Button 和1个CheckBox ;
并将CheckBox 的text 属性设为:“是否保存Cookis ";
Step 4:login.aspx 的隐藏代码如下:using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Data.SqlClient; //导入命名空间 public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void Button1_Click(object sender, EventArgs e) { string userName = TextBox1.Text.Trim(); string userPwd = TextBox2.Text.Trim(); SqlConnection con = new SqlConnection("Server=.;Database=MyForms;User ID=sa;Password=123456"); con.Open(); SqlCommand cmd = new SqlCommand("select count(*) from users where userName='" + userName + "' and userPwd='" + userPwd + "'", con); int count = Convert.ToInt32(cmd.ExecuteScalar()); if (count > 0) { System.Web.Security.FormsAuthentication.SetAuthCookie(this.TextBox1.Text, this.CheckBox1.Checked); Response.Redirect("Default.aspx"); //上面两行,也可以换成下面一行,如通过验证则直接转向请求的页面,而不需要Responsel.Redirect(""); //System.Web.Security.FormsAuthentication.RedirectFromLoginPage(this.TextBox1.Text, false); } else { Response.Write("用户不合法"); } } }
Step 5:拖一个Button 到 Default.aspx 上,将其text 属性设为"登出",其事件代码如下:protected void Button1_Click(object sender, EventArgs e) { System.Web.Security.FormsAuthentication.SignOut(); }
http://www.cnblogs.com/yoyebina/archive/2006/12/03/580121.html
关于FormsAuthentication创建的身份验证与Session的问题
开发系统时发现:使用FormsAuthentication创建的身份验证,在系统重新生成和IIS重新启动时,均还有效,但此时Session已无效。所以单纯的用FormsAuthentication进行身份验证就会有问题,因为在这两种情况下,系统仍可进行操作,不会返回到登录验证页,但此时Session中保存的值(如用户帐号、姓名等等)都没有了。所有我只能使用FormsAuthentication、Session双重验证,其实就是使用Session验证了,FormsAuthentication验证已没有意义。请教大家是如何解决这个问题的??
FormsAuthentication 只跟COOKIE有关 跟SESSION是无关的
FrmsAuthentication 有效果是因为相关的验证COOKIE存在了你的硬盘上,验证时检测到这个COOKIE所以当然验证通过。而SESSION当然没了 因为重新生成过了。
http://bbs.csdn.net/topics/70464881