`

DisCuz论坛与J2EE网站集成

阅读更多

DisCuz论坛与网站集成

 

参考文件 http://www.discuz.net/usersguide/advanced_passport.htm#title

 

1)  adminadmin,admin)身份登陆bbs 点击系统设置 à 扩展设置à 通行证设置

2)  在通行证设置中应用程序URL地址填写网站的地址(http://localhost:8080/mall/

3)  通行证私有密匙(1234567890

4)  应用程序注册地址(member/regist.shtml

5)  应用程序登陆地址(member/welcome.shtml

6)  应用程序推出地址(member/logoff.shtml

7)  保存退出

 

Constants中设置参数

//用于discuz登陆验证和通行证

   

public static String DISCUZKEY="1234567890"; //通行密匙   

public static String DZURL="http://localhost:82/discuz/";可改

 

suning.properties

web.url=http://localhost:8080/mall/

bbs.url=http://localhost:82/discuz/

 

在网站的登陆程序(在com.arvato.suning.member.web.action.loginAction)中添加

 

查找当前数据库如果参数正确,且用户存在则登陆bbs

 

//设置登陆时所需的参数username,password,time,email是必填的具体的内容见参考文件

//member为会员的模型

       String info = "username=" + member.getNickname() + "&password="

                                          + member.getPassword() + "&time="

                                          + DiscuzPassport.time() + "&email=" + member.getEmail();

 

// Constants.DISCUZKEYadmindiscuz中设置的通行证私有密匙

 

String auth = DiscuzPassport.passport_encrypt(info,

                                          Constants.DISCUZKEY);

 

//disforwardforward的参数 在地址栏中可以得到forward的内容

       String discuzforward = disforward;

 

       String verify = DiscuzPassport.md5("login" + auth

                                          + discuzforward + Constants.DISCUZKEY);

 

       //authdiscuzford一定要经过

 

       auth=URLEncoder.encode(auth, "UTF-8");

                           

       discuzforward=URLEncoder.encode(discuzforward, "UTF-8");

      

//登陆discuz的路径 action ,auth,forward,verifty是必需的不能少,如果错了报Illegal request等错误,祥见参考文件               

       String disurl = PropertiesMgt.getPropertiesKey(Constants.PROPERTIES_FILE_PATH, "bbs.url")+"api/passport.php?action=login&auth=" + auth

                                          + "&forward=" + discuzforward + "&verify=" + verify;

      

 

       //跳转到设置好的路径,注意redirect一定为true

       request.setAttribute("disurl", disurl);

 

       forward = new ActionForward(disurl);

 

       forward.setRedirect(true);

 

       return forward;

 

在网站的注销程序(com.arvato.suning.member.web.action.LoginOffAction)中

 

Member memberModel = (Member) request.getSession().getAttribute(Constants.SESSION_MEMBER_MODEL);

request.getSession().removeAttribute(Constants.SESSION_MEMBER_MODEL);

 

//得到如果注销discuz后跳转的路径             

String discuzforward = request.getParameter("forward");

//得到配置文件中网站所在的ip及路径

String weburl = PropertiesMgt.getPropertiesKey(Constants.PROPERTIES_FILE_PATH, "web.url"); 

//得到配置文件中discuz所在的ip及路径

 

String discuzurl = PropertiesMgt.getPropertiesKey(Constants.PROPERTIES_FILE_PATH, "bbs.url"); 

 

//如果得到了forward则可以设定discuzforward的跳转路径                 

if (discuzforward != null && !discuzforward.equals("")){

                   

discuzforward = weburl+"/member/welcome.shtml";

 

    //verifydiscuz注销时需要的通行证包括(logout:action的动作,discuzforward:跳转的路径,Constants. DISCUZKEY admin设置在 discuz通行证私有密匙)

       

String verify = DiscuzPassport.md5("logout" + discuzforward+ Constants.DISCUZKEY);

 

//disurl为调用discuz注销的实际路径需要 actionforwarddiscuz路径

String disurl = discuzurl+"api/passport.php?action=logout&auth=&forward="

                            + discuzforward + "&verify=" + verify;

 

return new ActionForward(disurl, true);

}

else{

    return mapping.findForward(Constants.SUCCESS_KEY);

}

 

 

 

package com.arvato.suning.util;

import java.io.IOException;

import java.security.MessageDigest;

import java.util.Date;

import java.util.Random;

import sun.misc.BASE64Decoder;

import sun.misc.BASE64Encoder;

public class DiscuzPassport {

      

       /**

        * 通行证编码

        *

        * @param txt

        * @param key

        * @return

        */

       public static String passport_encrypt(String txt, String key) {

              Random random = new Random();

              int dd = random.nextInt(32000);

              String encryptKey = md5(String.valueOf(dd));

              byte[] keybyte = encryptKey.getBytes();

              byte[] txtbyte = txt.getBytes();

              int ctr = 0;

              int j = 0;

              byte[] tmp = new byte[2 * txtbyte.length];

              for (int i = 0; i < txt.length(); i++) {

                     ctr = ctr == keybyte.length ? 0 : ctr;

                     tmp[j++] = keybyte[ctr];

                     tmp[j++] = xor(txtbyte[i], keybyte[ctr++]);

 

              }

              return new BASE64Encoder().encode(passport_key(tmp, key));

       }

 

       /**

        * 通行证密匙处理函数

        *

        * @param btxt

        * @param key

        * @return

        */

       public static byte[] passport_key(byte[] btxt, String key) {

              key =md5(key);

              byte[] keyAry = key.getBytes();

              int ctr = 0;

              byte[] tmp = new byte[btxt.length];

              for (int i = 0; i < btxt.length; i++) {

                     ctr = (ctr == keyAry.length) ? 0 : ctr;

                     tmp[i] = xor(btxt[i], keyAry[ctr++]);

              }

              return tmp;

       }

 

       /**

        * 通行证解码

        *

        * @param txt

        * @param key

        * @return

        * @throws IOException

        */

       public String passport_decrypt(String txt, String key) throws IOException {

              byte[] t = new BASE64Decoder().decodeBuffer(txt);

              byte[] btxt = passport_key(t, key);

              byte[] btmp = new byte[btxt.length];

              int j = 0;

              for (int i = 0; i < btxt.length; i++, j++)

                     btmp[j] = xor(btxt[i], btxt[++i]);

              return btmp.toString();

       }

 

       /**

        * 异或操作

分享到:
评论

相关推荐

    discuz的论坛登录、注册、退出与其他网站集成 讲解

    这篇讲解将深入探讨如何在你的网站中集成Discuz的登录、注册和退出功能,以实现更流畅的用户体验和高效的用户管理。 一、 Discuz论坛登录集成 1. API接口:Discuz提供了API接口供外部系统调用,你可以通过API来...

    J2EE版MeterSource软件网项目源码

    这个项目虽然在设计和功能上可能无法与互联网上的大型知名网站相媲美,但它为学习和理解J2EE应用程序开发提供了宝贵的实践案例。 **J2EE技术介绍** J2EE(Java 2 Platform, Enterprise Edition)是Oracle公司推出的...

    Discuz!+X3.1与通达OA2013增强版集成方法.pdf

    +X3.1与通达OA2013增强版集成方法解析 #### 一、通达OA2013增强版概述 通达OA2013增强版是由中国兵器工业信息中心通达信科自主研发的一款网络智能办公系统,旨在为企业提供高效、便捷的办公自动化解决方案。该系统...

    discuz x2.5和cas集成,一键登录

    Discuz X2.5是一款非常流行的社区论坛软件,而CAS(Central Authentication Service)是一种开源的单点登录(Single Sign-On, SSO)协议,广泛应用于多应用系统中,以实现用户只需一次登录即可访问所有系统。...

    Discuz!NT BBS与RTX集成

    NT BBS与RTX的集成为企业提供了一个全面的沟通解决方案,将论坛的开放性与即时通讯的高效性相结合,极大地提升了团队协作的效率和便捷性。对于需要构建内部社区和强化内部沟通的企业来说,这是一项值得投资的技术...

    完全版-官方UCenter1.5 UCHome2.0 Discuz7.2集成安装包简体GBK.zip

    7.2 (论坛) 通过本集成安装包,您可以立即全新安装上述产品到您的站点。 ------------------------------------------- 安装方法 ------------------------------------------- 注意: 本集成包仅适合您的...

    Discuz! X2与通达OA2011集成方法

    X2,一款知名的社区论坛系统,内置了UCenter组件,它允许与其他应用如通达OA2011实现用户数据的同步,使得用户在一个平台上登录后,无需再次登录就能在另一个平台上自由活动。这种集成方式大大提升了用户体验,同时...

    网店系统XpShop(捆绑集成Discuz 2.0论坛)_dotnet电子商务系统源代码.rar

    《XpShop网店系统与Discuz 2.0论坛集成详解》 在电子商务领域,一套稳定、功能完善的网店系统是企业在线业务的核心。本文将详细探讨"网店系统XpShop(捆绑集成Discuz 2.0论坛)"这一dotnet电子商务系统源代码,以及其...

    discuz x2.5和cas集成,实现cas单点登录 sso

    X2.5与CAS3.5的集成是提高社区论坛安全性、便利性的有效手段。通过单点登录,管理员可以统一管理用户账户,用户则能享受到无缝切换应用的体验。然而,集成过程涉及代码修改和服务器配置,需要一定的技术基础,因此...

    Discuz论坛源码1.1版

    Board 论坛系统(简称 Discuz! 论坛,中国国家版权局著作权登记号 2006SR11895)是一个采用 PHP 和 MySQL 等其他多种数据库构建的高效论坛解决方案.作为商业软件产品,Discuz! 在代码质量,运行效率,负载能力,安全等级,...

    Discuz开源论坛.NET版

    对于开发者来说,Discuz.NET版提供了API和Web服务,允许与其他系统集成,如SNS社交网络、电子商务平台等。通过API,开发者可以实现数据同步,比如用户信息、帖子内容的导入导出,增强了系统的可扩展性。 在安全性...

    Discuz! X3.1与通达OA2013增强版集成方法

    X3.1社区论坛与通达OA2013增强版办公自动化软件进行集成,利用Discuz!自带的UCenter系统实现用户信息的同步与单点登录功能。 首先,我们需要了解什么是Discuz! X3.1。Discuz! X3.1是一个由康盛创想(北京)科技有限...

    discuz论坛短信插件_discuz短信接口开发_discuz短信发送设置

    论坛的一种扩展,它允许管理员集成第三方短信服务提供商,以便通过短信进行用户验证和通知。安装此插件后,用户在注册或重置密码时可以接收到短信验证码,增强了账户的安全性。此外,还可以用于发送论坛活动消息,...

    discuz论坛显示昵称插件

    Discuz是中国知名的开源社区软件,广泛应用于各类网站,其核心特性是提供了一个强大且灵活的论坛管理平台。 这个插件适用于Discuz 2.5到3.1版本,这意味着它经过了多次更新和优化,以适应Discuz系统的变化。对于...

    Discuz论坛桌面显示

    "Discuz论坛桌面显示"是指通过特定的方式将Discuz论坛集成到桌面环境中,以便用户无需通过浏览器就能直接访问和操作论坛。这种方式通常是为了提供更加便捷的用户体验,特别是在与企业内部的通达OA(Office ...

    discuz完整源码下载

    进行深度定制,如优化性能、增加新功能、调整界面布局,甚至与其他系统集成。同时,Discuz! 社区和第三方开发者提供了丰富的插件和模块,使得这个平台具有极高的可扩展性。 总的来说,"discuz完整源码下载"涵盖了...

    discuz电影资源网站源码含论坛完整源码内含教程.zip

    在本文中,我们将详细探讨如何利用Discuz内核构建一个电影资源网站,包括电影门户和论坛,并结合提供的教程,帮助你快速上手。 首先,电影网站源码的搭建基础是Discuz,它是一款基于PHP和MySQL的社区论坛软件。...

    Discuz论坛网站行业模版

    【Discuz论坛网站行业模版】是一款专为搭建论坛型网站设计的专业模板,适用于各种行业,如技术交流、教育咨询、兴趣爱好等。这款模版以其丰富的功能、易用性和高度自定义性,成为了开发者们快速构建具有社区互动功能...

    论坛与ManYou无缝集成插件 for discuz!7.0.rar

    1. 本插件仅适用于Discuz!7.0测试版,其他版本不能保证正常使用。 2. 修改config.uch.php文件(附件包里) 如果您的UCHome和Discuz数据在同一库里,请按照Discuz根目录下的config.inc.php修改,否则请按照UCHome根...

    discuz论坛源代码

    《Discuz论坛源代码详解及应用指南》 Discuz是一款广泛应用的开源社区论坛软件,以其强大的功能和灵活性深受广大站长喜爱。本篇文章将深入解析Discuz论坛源代码,旨在帮助开发者更好地理解和掌握这款社区平台的核心...

Global site tag (gtag.js) - Google Analytics