我的快手绑定手机号弄丢了,想重新绑回现在快手原来绑定的手机号号,可是没有验证码

我现在碰到这样的问题,有三个域名a.com
b.,当用户在a.com完成登录后,再访问b.也需要登录状态。三个域名用的是同一个用户系统,只是前端展现不一样。
<dd style="float:cursor:" title="声誉值:
该问题被发起重新开启投票
投票剩余时间:
之前被关闭原因:
该问题被发起删除投票
投票剩余时间:
距离悬赏到期还有:
参与关闭投票者:
关闭原因:
该问题已经被锁定
锁定原因:()
保护原因:避免来自新用户不合宜或无意义的致谢、跟帖答案。
该问题已成功删除,仅对您可见,其他人不能够查看。
ucenter确实实现了代理认证的功能。不过想自己实现也是完全可行的。首先在用户端要标示一个在线的状态,那么在用户端能够存储数据而且兼容性好的就只剩下cookie了,但是cookie默认是不跨域的,怎么办呢?幸好有jsonp这项技术。可以跨域传递数据。在cookie中存储一个唯一id值,也其他的关联数据。然后在服务器器端的数据库中同样存储着一张数据表,可以根据这个cookie中的id查询登录时在数据库中写入的状态信息。OK,跨域的思路解决。
是否登录校验
/user/islogin?jsonp={callback} =& [1. 首先去找 cookie里面是否存在 .t.com 域下的 令牌 tokenket2. 不存在令牌3. 展现登录视图]
/user/islogin?jsonp={callback} =& [1. 首先去找 cookie里面是否存在 .t.com 域下的 令牌 tokenket2. 存在令牌但校验无效3. 展现登录视图]
/user/islogin?jsonp={callback} =& [1. 首先去找 cookie里面是否存在 .t.com 域下的 令牌 tokenket2. 存在令牌3. 令牌有效 -& 通过]
/user/logincheck?jsonp={callback} =& [1. 校验帐号信息2. 正确/错误/异常 []
正确 -& 生成令牌 -& 写入 .t.com 下的tokenket 中
关于一些讨论 请看
<dd style="float:cursor:" title="声誉值:
完全的跨域登录这个问题在业界早就有完善的解决方案了啊,叫做OAuth (最新版本是2.0),包括了服务器端第三方登录、客户端Javascript第三方登录、客户端桌面或手机软件第三方登录、用户名密码的第三方登录(可选,不安全)等等完整的一套解决方案。新浪微博等第三方登录接口都是这么设计的,为什么没人提呢……其他方案基本上都是有比较严重的安全漏洞的
具体的架构可以参考官方文档,大致上是这样的结构:(1) 需要第三方登录时:比如从a.com使用t.com登录,在a.com生成一个这样的页面链接:https://t.com/getcode?callback=http://a.com/callback&state=abce2324&appkey=29s0akfds3后面的state里面存储token,防止CSRF攻击appkey是大多数OAuth中都需要的,在访问时用来验证请求者的身份。获取code时使用明钥,获取authtoken时使用密钥,确保调用者身份。
<将这个链接展示给用户:&使用t.com登录&按钮,或者(在用户默许的条件下)自动重定向到这个页面t.com通过callback地址验证这个页面的确来自于有授权的a.com,然后展示给用户:
<请求使用您的t.com账号登录允许 拒绝如果未登录,则同时显示输入用户名、密码的框
如果用户以前已经授权过并且当前已经登录,这个过程就可以跳过,直接从getcode页面重定向回callback,这样这个登录的过程对用户来说就不可见了。如果用户允许的话,getcode会将页面重定向到callback:http://a.com/callback?code=239dsafk3k&state=abce2324
state参数保持不变,这样callback可以校验这个参数判断这次请求的确来自自己的getcode请求,而不是一次恶意的CSRF攻击。如果没有这个参数,一个恶意网站可能通过嵌入&img src="http://a.com/callback?code=safaew343"/&的方法在用户不知觉的情况下改变当前登录的账号。这时候用户进行的操作就可能被攻击者获得。
code参数是一个临时的标示符,在几分钟内有效,callback页面在获取code之后,通过curl调用:https://t.com/getauth?code=239dsafk3k&appkey=29s0akfds3&secretkey=2dskeislsedsa这个页面会通过json或者xml的格式返回authtoken,callback页面就可以通过authtoken来获取用户信息、模拟用户操作等等。通常也允许直接在callback中返回authtoken,但不如code方式安全,因为authtoken会显式地出现在地址中,用户可能不小心将地址发给了别人从而导致authtoken泄露。
对Javascript登录来说方法是类似的,差别在于:Javascript并不是重定向,而是打开一个新的窗口,显示getcode页面,并且要求直接返回authid,而且使用特殊的&Javascript登录&方法;getcode页面完成的时候,通过window.parent.location.href="#a934jkdsfsa"的方法返回。重定向到一个锚地址不会刷新页面,但javascript可以通过获取这个锚地址来获得返回的authtoken。之后可以用jsonp的方法来调用跨域API。jsonp的API不可以直接提供登录、或者无参数验证登录状态的接口,否则会引起严重的安全问题。但是可以提供使用code换取token的接口。
对应用程序登录来说:应用程序通过打开浏览器、或者显示内嵌的浏览器、或者显示链接给用户,展示:https://t.com/getcode?appkey=dskel22324这个页面在完成之后不进行callback,而是直接显示code:您的code为:dsal32lsdfsk然后用户将这个code复制并填写到应用程序指定的地方,应用程序使用code调用getauth获得authtoken
用户名密码验证就不用多说了,直接调http://t.com/getauth?username=...&password=...
对你自己的应用来说可以用简化版本:访问http://a.com/时,如果SESSION或Cookies里没有authtoken,显示登录按钮;登录到http://t.com/getcode,getcode验证callback地址,如果已经登录就直接跳转(跳过验证授权步骤),然后返回到callback;之后callback地址使用getauth获得token。之后还可以使用token来调用t.com上面的Service API。
要看你各个网站是依靠那种方式来验证登录了,session的话,可以通过memcache之类的nosql存储登录状态;cookie的话,可以在a登录的同时,向b和c发起请求,模拟一次登录,取回登录之后的cookie信息,在a输出的时候,设置cookie,这样能保证b和c同时登录
相当于有一个ucenter,提供一个服务器端xml_rpc的接口,b.com请求xml_rpc客户端检查用户是否通过,通过则解析这个cookie。里面加密了用户的各种信息。然后数据库检查这个用户存在与否,就可以显示其登陆状态了。这个是同一域名下登陆情况的处理。如果是不同域名下的登陆状态,可以多返回一个表示是否有其它子站也登陆的情况,如果a.com登陆了,返回is_login:1,否则返回is_login:0.就可以判断是否有其它子站,这个用户是否登陆了。
建议使用基于服务器的安全认证,由前台+数据库来管理,比如:定义SessionID,记录到cookie中,在filter中或许认证信息,然后由安全认证来进行校验是否合法,我使用具有Weblogic的安全认证,当然还有很多其他开源的
一朋友写的单点登录开源程序
1.可以借助第三方工具:比如memcache等Nosql存储登录的状态。2.也可以把登录状态到存储内存型的数据库中。3.总结单点登录主要目的:实现不同域的数据能确保一致性。
1.判断登录都是使用一个公共的页面作为中间页面的,无论是a.com,还是b.com ,还是 c.com ,着三个网站是共享这个页面的。
可以使用yale的CAS,搭建一个单点登录服务器,可以参考下这个链接
<dd style="float:cursor:" title="声誉值:
介绍一下某高人的解决方案,实现方案是b.com通过隐藏的iframe包含a.com的一个页面ssocross.html,此页面的功能是获取a.com用户登录后的cookie,并以参数的形式提交到b.com的页面userlogin.php,b.com的userlogin.php根据提交过来的cookie值实现用户的登录,如果考虑到效率问题,userlogin.php也可以做成静态页面。
ssocross.html的参考代码如下:
&html&&head&&script type="text/javascript"&
function loadHandler(){
var returl = getParameter("returl");
if(!returl)var s = document.getElementById("autoform");s.method = 'post';
s.action =
s.cookie.value = document.cookie.toString();s.submit();}function getParameter(name) {var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");var r = window.location.search.substr(1).match(reg);return r!=null ? decodeURIComponent(r[2]) :}&/script&&/head&&body onload="loadHandler()"&&form id="autoform" method = "post"&&input type="hidden" name="cookie"&&/form&&/body&&/html&
<可以通过这样调用此页面:
&iframe src="/ssocross.html?returl=/userlogin.php" style="display:none"&
/userlogin.php 可以通过$_POST获取到a.com的cookie值,进而实现在b.com中登录
以上代码没怎么考虑安全问题,可以进一步优化代码,提高安全性
隐藏IFRAME方式。网站A内嵌网站B的一个地址网站A登录后,设置一个短暂的session_key,内嵌B的这个地址包含短的session_key,网站B通过session_key获取到用户信息,创建sso信息。
php实现单点登录,在网上看到,也可以使用PHP(5.0以后)自带的扩展库SOAP,不知道有没有哪位大侠使用过?还有使用后的性能方面如何?
1.写一个接口 实现同登录退出 还有注册 2.用一个统一的 用户管理系统
是在用httpclient发文章吗?如果是的话,需要get一下啊,get到你要进入的那个url
跨域访问的话,可以使用P3P协议这个实现起来倒不算太难,就是复杂度太高,我感觉Ucenter1.6版本已经做得相当不错,不仅是用户同步登陆,而且跨站消息通知,还有积分兑换都做好了,直接看下API就行了~
同步登陆是需要&客户端&的,其实就是客户端主动发起的跨域访问当用户登陆上一个站点后,包含的&客户端&程序,一般是JS写的,就会像需要同步登陆的站点发送请求。
JS跨域找认证服务器取得登陆信息
不是您所需,查看更多相关问题与答案
德问是一个专业的编程问答社区,请
后再提交答案
关注该问题的人
共被浏览 (13546) 次请教如何给网站上传的图片加水印?有很多交友网站,当会员上传了自己的生活照片的时候,网站自动给
每张上传的图片加上 &烙印 & & :如打上自己的网站中文名字和网址等烙印,
&某某网站www.***.com & & 等这样的水印,我们的网站是用asp.net & (C# & )编写的程序,请问技术上一般如何实现这个功能呢?
回答1:private void Btn_Upload_Click(object sender, System.EventArgs e)
if(UploadFile.PostedFile.FileName.Trim()!= & &)
//上传文件
string extension = Path.GetExtension(UploadFile.PostedFile.FileName).ToUpper();
string fileName = DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString() + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString();
string path = Server.MapPath( &. &) +
&/UploadFile/ & + fileName +
UploadFile.PostedFile.SaveAs(path);
//加文字水印,注意,这里的代码和以下加图片水印的代码不能共存
System.Drawing.Image image = System.Drawing.Image.FromFile(path);
Graphics g = Graphics.FromImage(image);
g.DrawImage(image, 0, 0, image.Width, image.Height);
Font f = new Font( &Verdana &, 32);
Brush b = new SolidBrush(Color.White);
string addText = AddText.Value.Trim();
g.DrawString(addText, f, b, 10, 10);
g.Dispose();
//加图片水印
System.Drawing.Image image = System.Drawing.Image.FromFile(path);
System.Drawing.Image copyImage = System.Drawing.Image.FromFile( Server.MapPath( &. &) +
&/Alex.gif &);
Graphics g = Graphics.FromImage(image);
g.DrawImage(copyImage, new Rectangle(image.Width-copyImage.Width, image.Height-copyImage.Height, copyImage.Width, copyImage.Height), 0, 0, copyImage.Width, copyImage.Height, GraphicsUnit.Pixel);
g.Dispose();
//保存加水印过后的图片,删除原始图片
string newPath = Server.MapPath( &. &) +
&/UploadFile/ & + fileName +
image.Save(newPath);
image.Dispose();
if(File.Exists(path))
File.Delete(path);
Response.Redirect(newPath);
回答2:用GDI+
liudaigang
回答3:gdi+写文字上去建站教程子分类}

我要回帖

更多关于 快手注销绑定的手机号 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信