登录日志管理功能--1

 相关变量说明:
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;
  }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值