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

ContractedBlock.gif ExpandedBlockStart.gif Code
ContractedBlock.gifExpandedBlockStart.gif单点登录#region 单点登录
ContractedSubBlock.gifExpandedSubBlockStart.gif        
获取当前操作机器的MAC地址#region 获取当前操作机器的MAC地址
        [DllImport(
"Iphlpapi.dll")]
        
private static extern int SendARP(Int32 dest, Int32 host, ref Int64 mac, ref Int32 length);
        [DllImport(
"Ws2_32.dll")]
        
private static extern Int32 inet_addr(string ip);

        
public static string sortMAC(string userip)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            
//string userip = Request.UserHostAddress;
            Int32 ldest = inet_addr(userip); //目的地的ip 
            Int32 lhost = inet_addr(""); //本地服务器的ip 
            Int64 macinfo = new Int64();
            Int32 len 
= 6;
            
int res = SendARP(ldest, 0ref macinfo, ref len);
            
string mac_src = macinfo.ToString("X");

            
while (mac_src.Length < 12)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                mac_src 
= mac_src.Insert(0"0");
            }


            
string mac_dest = string.Empty;
            
for (int i = 0; i < 11; i++)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                
if (0 == (i % 2))
                    mac_dest 
= mac_dest.Insert(0, mac_src.Substring(i, 2));
            }

            
return mac_dest;
        }

        
#endregion


ContractedSubBlock.gifExpandedSubBlockStart.gif        
获取数据库中MAC地址#region 获取数据库中MAC地址
        
public static string GetMAC(string loginid)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            Dictionary
<stringobject> dict = new Dictionary<stringobject>();
            dict.Add(
"@LOGINID", loginid);
            UserOperationFacade facade 
= new UserOperationFacade();
            DataSet ds 
= facade.getUserIP(dict);
            
return ds.Tables[0].Rows[0][0].ToString();
        }

        
#endregion


ContractedSubBlock.gifExpandedSubBlockStart.gif        
单点登录#region 单点登录
        
public static bool ValidateMAC(string loginid,string userip)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            
bool back = true;
            
if (sortMAC(userip) != GetMAC(loginid))
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                LogUtility.Write_SSOLog(userip, GetMAC(loginid), DateTime.Now, loginid);
                back 
= false;
                
//HttpContext.Current.Response.Redirect("~/Login.aspx");              
            }

            
return back;
        }

        
#endregion

        
#endregion

 

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值