问题描述
以下是登陆的代码。我想跳转到main.aspx,但是结果却是不跳转,浏览器显示:Default.aspx?ReturnUrl=%2fmain.aspxprotectedvoiddlbutton_Click(objectsender,EventArgse){stringlianjie=ConfigurationManager.ConnectionStrings["lianjieshujuku"].ConnectionString;SqlConnectionconn=newSqlConnection(lianjie);conn.Open();SqlCommandcmd=newSqlCommand();cmd.Connection=conn;stringsfzh=this.tsfzh.Text.Trim();stringpwd=this.tmima.Text.Trim();cmd.Parameters.AddWithValue("@sfzh",sfzh);cmd.Parameters.AddWithValue("@pwd",pwd);cmd.CommandText="select*fromuserinfowhere[身份证号]=@sfzhand[密码]=@pwd";SqlDataReaderdr=cmd.ExecuteReader();if(dr.Read()){Session["username"]=dr["姓名"].ToString();Session["zhiwu"]=dr["职务"].ToString();Response.Redirect("main.aspx");}else{Response.Write("<script>alert('输入有误,请重新输入!');</script>");}}
解决方案
解决方案二:
哦,解决了,就是web.config中去掉下面这段代码。那么问题来了,谁能够详解一下,为什么不能用下面代码,不是要用forms身份验证方式吗?<authenticationmode="Forms"><formsname="authcookie"loginUrl="Default.aspx"/></authentication><authorization><denyusers="?"/></authorization>
解决方案三:
<authenticationmode="Forms"><formscookieless="UseCookies"defaultUrl="/default.aspx"loginUrl="/Login.aspx"/></authentication><authorization><denyusers="?"/></authorization>
FormsAuthentication.SetAuthCookie("SessionName",false);
解决方案四:
FormsAuthentication里有SetAuthCookie和RedirectFromLoginPage两个方法将用户的登陆信息(标记)记录到Cookie中而Forms认证方式中的HttpContext.Current.User.Identity.IsAuthenticated;依赖于这个Cookie里的信息判断用户是否登陆。FormsAuthentication.SignOut用来清除这个Cookie标记用法如下FormsAuthentication.SetAuthCookie(userID,createPersistentCookie);FormsAuthentication.RedirectFromLoginPage(userID,createPersistentCookie);
解决方案五:
不用Redirect,而是使用FormsAuthentication.RedirectFromLoginPage(登录账号,false);