实现对第三方论坛的统一登陆几种方法
今天博客园的朋友问我怎么实现第三方论坛统一登陆的问题,事后觉得有必要写出来讨论一下,如果有更好的方案不妨共享出来供大家讨论。
我先说我的方法:
第一种:修改源代码
现在开源的论坛网上很多,如微软的Asp.Net Forums 、Discuz!NT、Community Server等都是优秀的Asp.net开源论坛。这些论坛项目结构非常清晰,模块化强,对于这样的论坛需要实现用户统一管理其实不难,只要保证其用户接口的前提下重构整个用户模块即可做到。这个方法的优点是和网站实现了无缝集成,管理方便一劳永逸。缺点是需要读懂熟悉这些开源论坛的代码,对于一些技术比较薄弱的人来说显然有一定难度,另一个缺点是必须得是开源的否则的话就无能为力了 呵呵。
第二种:跳转登陆法
相对于第一种方法这种方法实现起来简单了很多,基本不需要读代码。首先在论坛里建一个登陆页面以Get方式获取用户名密码 然后在Page_OnLoad方法里调用论坛的登陆方法进行验证登陆,成功后要调用Request.ServerVariables("HTTP_REFERER")获取来源地址并返回
。其次要在网站的登陆成功后跳转到你自定义的登陆页面,如Response.Redirect("http://bbs.aa.com/CLogin.aspx?UserName=aaa&Password=12345")进行登陆。这里有一个注意的地方就是在自定义的登陆页面处理程序中登陆成功后需要将Cookies有效期设置的长一点 否则离开页面后就会失效。 你可以在自定义的页面中根据各种登陆的结果来执行相应的处理,如登陆返回用户不存在 你可以立即创建一个用户保证网站用的用户论坛也有。在用户修改密码的时候你也需要一个接口将论坛的密码修改掉。论坛修改密码的页面直接指向网站的吧 否则的话就会有问题了。总之你需要一系列的接口来实现网站和论坛用户的统一操作。这个方法有点就是简单不需要读代码。缺点是维护了两套用户。
第三种方法:自动登陆法
相信很多朋友做过自动登陆器,其实原理一样 当用户在主站登陆成功后通过POST方式将事先格式化好的数据包发给论坛的登陆界面 然后将返回的Cookies写入本地。注册、修改密码同样。优点:可以对非开源论坛进行统一登陆,也不用读任何代码,缺点:不能跨域,因为一旦跨域网站就没有权限写论坛的Cookies了。
总结:要实现统一登陆要根据你选择什么样的论坛,来做决定。如果想解决的彻底点那就找一套开源的论坛修改用户模块。如果无所谓那就可以用第二种或第三种方法都可以实现。
如果大家谁还有比较好的方式的一定不要吝啬,共享出来啊!呵呵~