您的位置:首页 > 其它

登录日志管理功能--1

2007-06-26 09:13 295 查看
相关变量说明:
result = userSystem.SingIn( tempUserName , tempPassWord , out data ); 得到最后登录信息的值
UserID :DataRow row = data.Tables[ "表名" ].Rows[ 0 ];
userID = Convert.ToInt32( row[ Common.AdminCommon.UserData.USER_ID_FIELD ] );
在登录方法中加入AddLog(result,tempUserName,userID) 方法
LogData 类:

public class LogData : DataSet
{
public const string LOG_INFO_TABLE = "AdminLogTab"; //登录表名

public const string LOG_ID_FIELD = "ID"; //主键
public const string LOG_USER_ID_FIELD = "UserID"; //登录的用户编号
public const string LOG_USER_NAME_FIELD = "UserName"; //登录的用户名
public const string LOG_LOGIN_TIME_FIELD = "LogInTime"; //登录时间
public const string LOG_VALID_FIELD = "Valid"; //是否成功
public const string LOG_LOGOFF_TIME_FIELD = "LogOffTime"; //登出时间,暂时没用
public const string LOG_USER_IP_FIELD = "UserIp"; //登录的Ip
public const string LOG_REASON_FIELD = "Reason"; //原因

public LogData()
{
//
// TODO: 在此处添加构造函数逻辑
//

BuildTable();
}

private void BuildTable()
{
DataTable dt = new DataTable( LOG_INFO_TABLE );

DataColumnCollection dc = dt.Columns;

dc.Add( LOG_ID_FIELD , typeof( System.Int32 ));
dc.Add( LOG_USER_ID_FIELD , typeof( System.Int32 ));
dc.Add( LOG_USER_NAME_FIELD,typeof( System.String ));
dc.Add( LOG_LOGIN_TIME_FIELD ,typeof(System.DateTime ));
dc.Add( LOG_VALID_FIELD ,typeof( System.String ));
dc.Add( LOG_LOGOFF_TIME_FIELD ,typeof(System.DateTime ));
dc.Add( LOG_USER_IP_FIELD ,typeof( System.String ));
dc.Add( LOG_REASON_FIELD ,typeof( System.String ));

this.Tables.Add(dt);
}
}

//得到IP
public string getIp()
{
string GetString = "";
string Ip = "";
try
{
if(Request.ServerVariables["HTTP_VIA"]!=null)
{
GetString = Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
Ip = Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();
}
else
{
GetString = Request.ServerVariables["REMOTE_ADDR"];
Ip = Request.ServerVariables["REMOTE_ADDR"].ToString();
}
}
catch(Exception error)
{
//
Ip = "192.168.0.5";
throw new Exception(error.Message ,error);
}
return Ip;
}

//添加日志方法
private void AddLog(int result , string tempUserName , int userID)
{
LogData logData = new LogData();
DataTable logDataTable = logData.Tables[LogData.LOG_INFO_TABLE];
DataRow dr= logDataTable.NewRow( );

int valid = 0; // 登录状态
string reason = ""; //登录成功或失败的原因

if( result == 0 )
{
valid = 1;
}
else
{
valid = 0;
}

switch ( result )
{
//登录成功,返回到主界面
case 0:
reason = "成功登陆";
break;
//用户名错误
case -1:
reason ="用户不存在";
break;
//密码错误
case -2:
reason = "密码错误";
break;
}
dr[LogData.LOG_USER_ID_FIELD]= userID;
dr[LogData.LOG_USER_NAME_FIELD] =tempUserName;
dr[LogData.LOG_VALID_FIELD] =valid;
dr[LogData.LOG_USER_IP_FIELD] =getIp();
dr[LogData.LOG_REASON_FIELD] = reason;

logDataTable.Rows.Add( dr );

LogFacade clsLogFacade = new LogFacade();

clsLogFacade.InsertLog( logData );

}

//InsertLog方法
public bool InsertLog(LogData log)
{
bool result = false;
if( sqlDataAdapter == null )
{
throw new System.ObjectDisposedException( GetType().FullName );
}

insertCommand = new SqlCommand( "ProcAdminLogInsert",this.dataConn );
insertCommand.CommandType = CommandType.StoredProcedure;
SqlParameterCollection sqlParams = insertCommand.Parameters;

sqlParams.Add(new SqlParameter(paramChg(LogData.LOG_USER_ID_FIELD) ,SqlDbType.Int));
sqlParams.Add(new SqlParameter(paramChg(LogData.LOG_USER_NAME_FIELD) ,SqlDbType.NVarChar,50));
sqlParams.Add(new SqlParameter(paramChg(LogData.LOG_VALID_FIELD) ,SqlDbType.TinyInt));
sqlParams.Add(new SqlParameter(paramChg(LogData.LOG_USER_IP_FIELD) ,SqlDbType.NVarChar,50));
sqlParams.Add(new SqlParameter(paramChg(LogData.LOG_REASON_FIELD) ,SqlDbType.NVarChar,50));

sqlParams[paramChg(LogData.LOG_USER_ID_FIELD)].SourceColumn = LogData.LOG_USER_ID_FIELD;
sqlParams[paramChg(LogData.LOG_USER_NAME_FIELD)].SourceColumn = LogData.LOG_USER_NAME_FIELD;
sqlParams[paramChg(LogData.LOG_VALID_FIELD)].SourceColumn = LogData.LOG_VALID_FIELD;
sqlParams[paramChg(LogData.LOG_USER_IP_FIELD)].SourceColumn = LogData.LOG_USER_IP_FIELD;
sqlParams[paramChg(LogData.LOG_REASON_FIELD)].SourceColumn = LogData.LOG_REASON_FIELD;

// //从存储过程获取返回值用以判断
SqlParameter paramReturnValue = new SqlParameter( "@ReturnValue" , SqlDbType.Int );
paramReturnValue.Direction = ParameterDirection.ReturnValue;
insertCommand.Parameters.Add( paramReturnValue );
sqlDataAdapter.InsertCommand = insertCommand;
sqlDataAdapter.Update(log ,LogData.LOG_INFO_TABLE);

//定义变量y来接收存储过程的返回值
int y = 0;
y = Convert.ToInt32( insertCommand.Parameters[ "@ReturnValue" ].Value );
if(y == 0)
{
result = false;
}
else
{
result = true;
}
return result;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐