ASP.NET中简单实现单点登陆

原文链接:http://www.cnblogs.com/lx0831/archive/2009/04/02/1428415.html ASP.NET中简单实现单点登陆ASP.NET中简单实现单点登陆Code
ASP.NET中简单实现单点登陆ASP.NET中简单实现单点登陆单点登录#region 单点登录
ASP.NET中简单实现单点登陆ASP.NET中简单实现单点登陆        获取当前操作机器的MAC地址#region 获取当前操作机器的MAC地址
ASP.NET中简单实现单点登陆        [DllImport("Iphlpapi.dll")]
ASP.NET中简单实现单点登陆        private static extern int SendARP(Int32 dest, Int32 host, ref Int64 mac, ref Int32 length);
ASP.NET中简单实现单点登陆        [DllImport("Ws2_32.dll")]
ASP.NET中简单实现单点登陆        private static extern Int32 inet_addr(string ip);
ASP.NET中简单实现单点登陆
ASP.NET中简单实现单点登陆        public static string sortMAC(string userip)
ASP.NET中简单实现单点登陆ASP.NET中简单实现单点登陆        ASP.NET中简单实现单点登陆{
ASP.NET中简单实现单点登陆            //string userip = Request.UserHostAddress;
ASP.NET中简单实现单点登陆            Int32 ldest = inet_addr(userip); //目的地的ip 
ASP.NET中简单实现单点登陆            Int32 lhost = inet_addr(""); //本地服务器的ip 
ASP.NET中简单实现单点登陆            Int64 macinfo = new Int64();
ASP.NET中简单实现单点登陆            Int32 len = 6;
ASP.NET中简单实现单点登陆            int res = SendARP(ldest, 0, ref macinfo, ref len);
ASP.NET中简单实现单点登陆            string mac_src = macinfo.ToString("X");
ASP.NET中简单实现单点登陆
ASP.NET中简单实现单点登陆            while (mac_src.Length < 12)
ASP.NET中简单实现单点登陆ASP.NET中简单实现单点登陆            ASP.NET中简单实现单点登陆{
ASP.NET中简单实现单点登陆                mac_src = mac_src.Insert(0, "0");
ASP.NET中简单实现单点登陆            }
ASP.NET中简单实现单点登陆
ASP.NET中简单实现单点登陆            string mac_dest = string.Empty;
ASP.NET中简单实现单点登陆            for (int i = 0; i < 11; i++)
ASP.NET中简单实现单点登陆ASP.NET中简单实现单点登陆            ASP.NET中简单实现单点登陆{
ASP.NET中简单实现单点登陆                if (0 == (i % 2))
ASP.NET中简单实现单点登陆                    mac_dest = mac_dest.Insert(0, mac_src.Substring(i, 2));
ASP.NET中简单实现单点登陆            }
ASP.NET中简单实现单点登陆            return mac_dest;
ASP.NET中简单实现单点登陆        }
ASP.NET中简单实现单点登陆        #endregion
ASP.NET中简单实现单点登陆
ASP.NET中简单实现单点登陆ASP.NET中简单实现单点登陆        获取数据库中MAC地址#region 获取数据库中MAC地址
ASP.NET中简单实现单点登陆        public static string GetMAC(string loginid)
ASP.NET中简单实现单点登陆ASP.NET中简单实现单点登陆        ASP.NET中简单实现单点登陆{
ASP.NET中简单实现单点登陆            Dictionary<string, object> dict = new Dictionary<string, object>();
ASP.NET中简单实现单点登陆            dict.Add("@LOGINID", loginid);
ASP.NET中简单实现单点登陆            UserOperationFacade facade = new UserOperationFacade();
ASP.NET中简单实现单点登陆            DataSet ds = facade.getUserIP(dict);
ASP.NET中简单实现单点登陆            return ds.Tables[0].Rows[0][0].ToString();
ASP.NET中简单实现单点登陆        }
ASP.NET中简单实现单点登陆        #endregion
ASP.NET中简单实现单点登陆
ASP.NET中简单实现单点登陆ASP.NET中简单实现单点登陆        单点登录#region 单点登录
ASP.NET中简单实现单点登陆        public static bool ValidateMAC(string loginid,string userip)
ASP.NET中简单实现单点登陆ASP.NET中简单实现单点登陆        ASP.NET中简单实现单点登陆{
ASP.NET中简单实现单点登陆            bool back = true;
ASP.NET中简单实现单点登陆            if (sortMAC(userip) != GetMAC(loginid))
ASP.NET中简单实现单点登陆ASP.NET中简单实现单点登陆            ASP.NET中简单实现单点登陆{
ASP.NET中简单实现单点登陆                LogUtility.Write_SSOLog(userip, GetMAC(loginid), DateTime.Now, loginid);
ASP.NET中简单实现单点登陆                back = false;
ASP.NET中简单实现单点登陆                //HttpContext.Current.Response.Redirect("~/Login.aspx");              
ASP.NET中简单实现单点登陆            }
ASP.NET中简单实现单点登陆            return back;
ASP.NET中简单实现单点登陆        }
ASP.NET中简单实现单点登陆        #endregion
ASP.NET中简单实现单点登陆        #endregion

 

获得客户端本地的MAC地址。

但是这个方法只能用在局域网内,如果网站放在广域网上的话,是无法获得客户端的MAC地址的。

转载于:https://www.cnblogs.com/lx0831/archive/2009/04/02/1428415.html

上一篇:ADO.NET调用存储过程


下一篇:Java中OutOfMemoryError(内存溢出)的情况及解决办法