问题描述
想通过登录按钮写代码,实现权限验证,用IF...ELSE语句,不同权限进入不同页面,Authority=1,进入IN.aspx,Authority=2,进入OUT.aspx,Authority=3,进入SAVE.aspx.Authority为数据表Administrator中的字段值,SQL数据库已连接,不知道怎么写代码,求大神指点,菜鸟谢过!!!按钮目前只能实现登陆,代码如下,求补充protectedvoidButton1_Click(objectsender,EventArgse){SqlConnectionconn=newSqlConnection();conn.ConnectionString=System.Configuration.ConfigurationManager.ConnectionStrings["conn"].ToString();conn.Open();SqlCommandcom=newSqlCommand("select*fromAdministratorwhereUserName='"+TextBox1.Text.ToString()+"'andPassWord='"+TextBox2.Text.ToString()+"'",conn);SqlDataReaderdr=com.ExecuteReader();if(dr.Read()){dr.Close();Page.ClientScript.RegisterClientScriptBlock(this.GetType(),"sd","alert('登录成功!')",true);Session["UserName"]=TextBox1.Text.ToString();Response.Redirect("OUT.aspx");}else{dr.Close();Page.ClientScript.RegisterClientScriptBlock(this.GetType(),"sd","alert('用户名或密码错误!')",true);TextBox1.Text="";TextBox2.Text="";}}
解决方案
解决方案二:
Administrator表中应该有Role吧,然后从SqlDataReader中把Role的值读出来,就可以判断了。可以这么读取:if(rdr.Read()){//gettheresultsofeachcolumnstringcontact=(string)rdr["ContactName"];stringcompany=(string)rdr["CompanyName"];stringcity=(string)rdr["City"];//printouttheresultsConsole.Write("{0,-25}",contact);Console.Write("{0,-20}",city);Console.Write("{0,-25}",company);Console.WriteLine();}最后记得close
解决方案三:
先验证账号密码是否正确,不正确直接报账号密码错误,正确的话再判断Authority字段的值,各自进入各自的页面,其实你思路都那么清晰,怎么会做不出?还有你验证账号密码的时候,直接把整行数据都取出来(取不到值侧账号密码错误),这样就有Authority的值了
解决方案四:
51aspx有现成的通用权限管理系统,下载一个配置一下就可以了一般权限控制的思想是建立角色,不同角色对应不同的权限,根据权限加载功能页面地址存放在功能表中,打开页面时判断SESSION中是否有值,没有说明用户没有登录不允许查看
解决方案五:
如果是CS程序,就是通过反射,将功能表的命名空间字符串反射为对象
解决方案六:
各位大神帮忙看看,真心不太会,求赐代码!!!急急急!!!protectedvoidButton1_Click(objectsender,EventArgse){SqlConnectionconn=newSqlConnection();conn.ConnectionString=System.Configuration.ConfigurationManager.ConnectionStrings["conn"].ToString();conn.Open();SqlCommandcom=newSqlCommand("select*fromAdministratorwhereUserName='"+TextBox1.Text.ToString()+"'andPassWord='"+TextBox2.Text.ToString()+"'",conn);SqlDataReaderdr=com.ExecuteReader();if(dr.Read()){dr.Close();if(Session["Authority"].ToString()!="1"){Response.Redirect("IN.aspx");}elseif(Session["Authority"].ToString()!="2"){Response.Redirect("OUT.aspx");}else{Response.Redirect("SAVE.aspx");}Page.ClientScript.RegisterClientScriptBlock(this.GetType(),"sd","alert('登录成功!')",true);}else{dr.Close();Page.ClientScript.RegisterClientScriptBlock(this.GetType(),"sd","alert('用户名或密码错误!')",true);TextBox1.Text="";TextBox2.Text="";}错误信息异常详细信息:System.NullReferenceException:未将对象引用设置到对象的实例。源错误:行27:dr.Close();行28:行29:if(Session["Authority"].ToString()!="1")行30:{Response.Redirect("IN.aspx");}行31:elseif(Session["Authority"].ToString()!="2")源文件:d:WebSiteLogin.aspx.cs行:29堆栈跟踪:[NullReferenceException:未将对象引用设置到对象的实例。]Login.Button1_Click(Objectsender,EventArgse)ind:WebSiteLogin.aspx.cs:29System.Web.UI.WebControls.Button.OnClick(EventArgse)+109System.Web.UI.WebControls.Button.RaisePostBackEvent(StringeventArgument)+103System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(StringeventArgument)+10System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandlersourceControl,StringeventArgument)+13System.Web.UI.Page.RaisePostBackEvent(NameValueCollectionpostData)+31System.Web.UI.Page.ProcessRequestMain(BooleanincludeStagesBeforeAsyncPoint,BooleanincludeStagesAfterAsyncPoint)+3464
解决方案七:
加断点Debug模式下一行一行代码的调试吧