如何写一个Session验证函数?(C#) 我在登陆的时候将用户的 名称和密码写进了Session用户登陆以后要进行其它操作时需要将Session中的用户名、密码跟数据库中的做对比每一个页面都写验证这样有点太麻烦了,感觉应该可以写成一个函数但又不知道该怎么去写,希望大家帮我一下。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 .aspx.cs文件继承System.Web.UI.Page可以建一个Common类继承System.Web.UI.Page而.aspx.cs再继承Common在Common中可以放很多公共的东东 应该是先检查数据库,如果存在,再赋Session的吧? Session中的值是验证过后才写进去的,怕不安全所以想在以后的页面中都打开检查一下。 longhorn008(菜鸟.net) 能给出详细的代码吗?我是新手对C#不熟悉,最好是能给我一个例子我慢慢的研究一下。 Session是在服务器内存中,没这个必要了吧。 Common 类里添加protected bool IsLogin{ get { if(session["logined"]==null) return false; return true; } set { session["logined"]=value; }}protected void CheckLogin(){ if(!IsLogin) { //没登陆的处理方法 } }login.aspx.cs 继承Common,所有需要验证的都继承这个类。Page_Load 登陆成功后把 IsLogin=true 即可 Page_load里调用 CheckLogin()你可以试试 这样做只是判断了Session是否为无效数据,并没有跟数据库中的 数据做比对啊, 网上有大把的验证控件,不过,我想这个不是很安全,控件的session["aaa"]很容易知道的,如果上传一个文件到哪里,不就可以取得到session值啦。然后狂注册。 可以做一个验证登陆的页面,然后每个页面在page_load中用server.Excute去访问在那个登陆的页面用session[""]取出来的值来跟数据库比对,如果false的话就response.redirect,这样在每个页面只要增加server.Excute就可以了 可以建一个Common类继承System.Web.UI.Page这句话怎么实现?在新建类里面好象不能using System.Web.UI.Page Common : System.Web.UI.Page这是我检查cookies的函数,你改一下成session的。 /// <summary> /// 检查Cookies,获得memStatus /// </summary> public void CheckCookie() { string tempName=""; string tempHashKey=""; if(Request.Cookies[CookieName]!=null) { tempName=CheckStr(Request.Cookies[CookieName].Values["memName"].ToString()); tempHashKey=CheckStr(Request.Cookies[CookieName].Values["memHashKey"].ToString()); } if(tempName==string.Empty||tempHashKey==string.Empty) { Logout(false); } else { this.Instance(); dbo.SqlCmd="SELECT Top 1 mem_ID,mem_Name,mem_Password,mem_salt,mem_Status,mem_LastIP,mem_lastVisit,mem_hashKey FROM blog_member WHERE mem_Name='"+tempName+"' AND mem_hashKey='"+tempHashKey+"'AND mem_hashKey<>''"; IDataReader dr=dbo.dataReader(); if(dr.Read()) { UserID=dr["mem_ID"].ToString(); memName=Request.Cookies[CookieName].Values["memName"].ToString(); memStatus=dr["mem_Status"].ToString(); //this.Alert(memStatus); } dbo.ResetDB(); dbo.CloseDB(); } } 我用的是public class Usercheck{ public static void CheckUser(System.Web.UI.Page page) { string UserID,Userpas,User_lock=null; UserID = (string)page.Session["UserID"]; Userpas = (string)page.Session["Userpas"]; User_lock = (string)page.Session["User_lock"]; SqlConnection conn = new SqlConnection (ConfigurationSettings.AppSettings["Connstr"]); conn.Open(); string strsql = "select UserID,Userpas,ID,User_lock from Admin where UserID = '" + UserID + "' and Userpas = '" + Userpas + "' And User_lock='0'"; SqlCommand cmd = new SqlCommand(strsql,conn); SqlDataReader dr = cmd.ExecuteReader(); if(dr.Read()) { if(UserID == (string)dr["UserID"]) {} if(Userpas == (string)dr["Userpas"]) {} } else { page.Server.Transfer("login.aspx?logout=true"); } dr.Close(); conn.Close(); }}不知道这种方法是否得当 无法登录 Razor视图引擎和ASPX引擎有什么区别? Asp.net怎么知道那个按钮被点击了? 太菜的问题。 我想开始做一个web控件,不知道怎么下手? 实现foreach语句需要实现哪个接口? 为什么按钮在<asp:Repeater>控件里时不能通过双击按钮添加事件? DataGrid无法获取某行的数据,按照正确的方法做了,但是还是有错。 我的错误提示原来是中文的,现在变成英文的了,怎么改回去? 求代码!以某列不重复的值为条件获取数据【asp.net,sqlserver】,在线等,可以运行就结贴 asp.net做一个很简单的登录,但是就是出现一个问题解决不了,请教 大文件上传得问题
可以建一个Common类继承System.Web.UI.Page
而.aspx.cs再继承Common
在Common中可以放很多公共的东东
longhorn008(菜鸟.net) 能给出详细的代码吗?我是新手对C#不熟悉,最好是能给我一个例子我慢慢的研究一下。
protected bool IsLogin
{
get
{
if(session["logined"]==null)
return false;
return true;
}
set
{
session["logined"]=value; }
}
protected void CheckLogin()
{
if(!IsLogin)
{
//没登陆的处理方法 } }login.aspx.cs 继承Common,所有需要验证的都继承这个类。Page_Load
登陆成功后把 IsLogin=true 即可
你可以试试
这句话怎么实现?在新建类里面好象不能using System.Web.UI.Page
/// 检查Cookies,获得memStatus
/// </summary>
public void CheckCookie()
{
string tempName="";
string tempHashKey="";
if(Request.Cookies[CookieName]!=null)
{
tempName=CheckStr(Request.Cookies[CookieName].Values["memName"].ToString());
tempHashKey=CheckStr(Request.Cookies[CookieName].Values["memHashKey"].ToString());
}
if(tempName==string.Empty||tempHashKey==string.Empty)
{
Logout(false);
}
else
{
this.Instance();
dbo.SqlCmd="SELECT Top 1 mem_ID,mem_Name,mem_Password,mem_salt,mem_Status,mem_LastIP,mem_lastVisit,mem_hashKey FROM blog_member WHERE mem_Name='"+tempName+"' AND mem_hashKey='"+tempHashKey+"'AND mem_hashKey<>''";
IDataReader dr=dbo.dataReader();
if(dr.Read())
{
UserID=dr["mem_ID"].ToString();
memName=Request.Cookies[CookieName].Values["memName"].ToString();
memStatus=dr["mem_Status"].ToString();
//this.Alert(memStatus);
}
dbo.ResetDB();
dbo.CloseDB();
}
}
{
public static void CheckUser(System.Web.UI.Page page)
{
string UserID,Userpas,User_lock=null;
UserID = (string)page.Session["UserID"];
Userpas = (string)page.Session["Userpas"];
User_lock = (string)page.Session["User_lock"];
SqlConnection conn = new SqlConnection (ConfigurationSettings.AppSettings["Connstr"]);
conn.Open();
string strsql = "select UserID,Userpas,ID,User_lock from Admin where UserID = '" + UserID + "' and Userpas = '" + Userpas + "' And User_lock='0'";
SqlCommand cmd = new SqlCommand(strsql,conn);
SqlDataReader dr = cmd.ExecuteReader();
if(dr.Read())
{
if(UserID == (string)dr["UserID"])
{}
if(Userpas == (string)dr["Userpas"])
{}
}
else
{
page.Server.Transfer("login.aspx?logout=true");
}
dr.Close();
conn.Close();
}
}
不知道这种方法是否得当