分享
 
 
 

asp写的openid登录方法

王朝学院·作者佚名  2009-04-24
窄屏简体版  字體: |||超大  

以前好像看到sipo说asp写openid有些不能解决的问题,我也没查openid的规范。

这个对付简单的登录还是没问题的,不过代码还没测试。

先放上来,有兴趣的可以看看

<script language="JScript" runat="server">

/*

ASP Openid

by fisker

2008-9-3

*/

var alert=print=write=function(str){Response.Write(str);}

var openid = new fiskerOpenid();

var input=getInput();

if(input["openid.mode"]=="id_res"){

var nickname = input["openid.sreg.nickname"];

var email = input["openid.sreg.email"];

var returnUrl=input["return"];

returnUrl += returnUrl.indexOf("?")!=-1?"&":"?";

returnUrl += "nickname="+nickname;

returnUrl += "&email="+email;

Response.Redirect(returnUrl);

}else{

if(input["openid"]==""||input["return"]==""){

Response.write("<sc"+"ript>");

Response.write("alert(\"error\");");

Response.write("window.history.forward(1);");

Response.write("</sc"+"ript>");

Response.end();

}

openid.url = input["openid"];

openid.get();

}

function getInput(){

var input=new Array();

var e=new Enumerator(Request.QueryString);

for (;!e.atEnd();e.moveNext()){

x=e.item();

input[String(x).toLowerCase()]=String(Request.QueryString(x));

}

e=new Enumerator(Request.Form);

for (;!e.atEnd();e.moveNext()){

x=e.item();

input[String(x).toLowerCase()]=String(Request.Form(x));

}

return input;

}

function fiskerOpenid(){

this.url="";

this.server="";

this.delegate="";

this.user = null;

this.trust_root="";

this.return_to="";

this.sreg_required="nickname,email";

this.get = function(info){

if(!this.init()){Response.write("error");return;}

if(info!=undefined)this.sreg_required=info;

var html=this.request(this.server,"openid.mode=associate&openid.assoc_type=HMAC-SHA1");

if (html==""){Response.write("error");return;}

var assoc_handle = "";

var assoc_type = "";

var expires_in = "";

var mac_key = "";

try{

var re=new RegExp("assoc_handle:(.+)","ig");

assoc_handle = re.exec(html)[1];

var re=new RegExp("assoc_type:(.+)","ig");

aassoc_type = re.exec(html)[1];

var re=new RegExp("expires_in:(.+)","ig");

expires_in = re.exec(html)[1];

var re=new RegExp("mac_key:(.+)","ig");

mac_key = re.exec(html)[1];

delete re;

}catch(e){}

var url = this.server;

url += url.indexOf("?")!=-1?"&":"?";

url += "openid.mode="+Server.URLEncode("checkid_setup");

url += "&openid.identity="+Server.URLEncode(this.delegate);

url += "&openid.trust_root="+Server.URLEncode(this.trust_root);

url += "&openid.return_to="+Server.URLEncode(this.return_to);

url += "&openid.assoc_handle="+Server.URLEncode(assoc_handle);

url += "&openid.sreg.required="+Server.URLEncode(this.sreg_required);

Response.Redirect(url);

}

this.init = function(){

if(!this.check()) return false;

if(this.trust_root==""||this.return_to==""){

var thisServer="";

var thisUrl="";

thisServer+=String(Request.serverVariables("https")).toLowerCase()=="off"?"http://":"https://";

thisServer+=String(Request.serverVariables("server_name"));

thisServer+=String(Request.serverVariables("server_port"))=="80"?"":":"+String(Request.ServerVariables("server_port"));

thisUrl+=thisServer;

thisUrl+=String(Request.serverVariables("URL"));

thisUrl+=String(Request.QueryString)==""?"":"?"+String(Request.QueryString);

this.trust_root=(this.trust_root==""?thisServer:this.trust_root);

this.return_to=(this.return_to==""?thisUrl:this.return_to);

}

var html = this.request(this.url);

if (html=="") return false;

html=html.replace(/\'/ig,"\"");

var re=new RegExp("<link(.*?)rel=\"(.*?)\"(.*?)href=\"(.*?)\"(.*?)>","ig");

var arr=[];

while ((arrMatch = re.exec(html)) != null){

var index=arrMatch[2].toLowerCase();

var value=arrMatch[4];

if(index.indexOf(" ")){

for(var j=0;j<index.split(" ").length;j++)arr[index.split(" ")[j]]=value;

}else{

arr[index]=value;

}

}

delete re;

if(arr["openid.server"]!=""){

this.server=arr["openid.server"];

}else{

return false;

}

this.delegate = arr["openid.delegate"]==undefined?this.url:arr["openid.delegate"];

return true;

}

this.check = function(){

if (this.url=="") return false;

if(this.url.indexOf("://")==-1) this.url="http://"+this.url;

return true;

}

this.request = function(url,data){

if (data == undefined)var data = null;

var method = data ? 'POST' : 'GET';

var html="";

try{

var xmlhttp=Server.CreateObject("MSXML2.ServerXMLHTTP.3.0");

xmlhttp.open(method,url,false);

xmlhttp.send(data);

html = this.bytesToStr(xmlhttp.responseBody);

delete xmlhttp;

}catch(e){}

return html;

}

this.bytesToStr = function(CodeBody){

var objStream= Server.CreateObject("ado"+"db.stream") ;

objStream.Type = 1 ;

objStream.Mode =3 ;

objStream.Open() ;

objStream.Write(CodeBody);

objStream.Position = 0 ;

objStream.Type = 2 ;

objStream.charset = "utf-8" ;

var returnstr = objStream.ReadText;

objStream.Close();

delete objStream;

return returnstr;

}

}

</script>

作者:fisker

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有