疯狂的企鹅

Crazy.Rico's Blog


  • 首页

  • 归档

  • 关于

  • 标签

  • 分类

  • links

  • 搜索

JavaWeb整合Discuz实现单点登录

发表于 2016-09-26 更新于 2019-10-16 分类于 其他 , 论坛 阅读次数:
本文字数: 2.8k 阅读时长 ≈ 3 分钟

为了丰富员工业余生活,增多交流机会,于是在公司搭建了论坛方便大家灌水,目前公司中企业级应用是基于JAVAEE的产品,论坛选用了比较受欢迎的Discuz 3.2, 为了避免二次登陆使用单点登陆解决,虽然查找了各种资料做集成,但是其中还是遇到了些问题,翻墙发现了:
discuz-ucenter-api-for-java
因为被墙,在国内无法访问code.google.com,已将测试代码做了部分调整上传至GitHub:
https://github.com/yaonew/discuz-ucenter_api_for_java

第一步配置config.properties

1
2
3
4
5
UC_API = http://你的discuz地址/uc_server  如http://localhost/bbs/uc_server
UC_IP = 正常情况下留空即可
UC_KEY = N3M117R45aWfqfe4xcu0OfTcAT3r4K6f2KRoUOFYT(与ucenter通信的密钥,这里自己设定,需与discuz ucenter 一致)
UC_APPID = 2 //appID为UCenter中应用管理中的ID,见UCenter设置
UC_CONNECT = 正常情况下留空即可

第二步 配置web.xml,添加如下

1
2
3
4
5
6
7
8
9
<servlet>
<servlet-name>api</servlet-name>
<servlet-class>com.fivestars.interfaces.bbs.api.UC</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>api</servlet-name>
<url-pattern>/api/uc.php</url-pattern>
</servlet-mapping>

第三步 配置ucenter

管理员登陆UCenter : http://localhost/bbs/uc_server
应用管理-> 添加应用, 这边添加的应用ID,通信秘钥与第一步的配置保持一致


配置完成,看到通信成功的信息,表示ucenter集成配置OK

第四步 访问测试页

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<%@page import="java.util.LinkedList"%>
<%@page import="com.fivestars.interfaces.bbs.util.XMLHelper"%>
<%@page import="com.fivestars.interfaces.bbs.client.Client"%>
<%
Client uc = new Client();
//String result1 = uc.uc_user_register("test3", "test3", "test3@huaqi.info");
//out.println("xxx" + result1);
String result = uc.uc_user_login("test3", "test3");

LinkedList<String> rs = XMLHelper.uc_unserialize(result);
if(rs.size()>0){
int $uid = Integer.parseInt(rs.get(0));
String $username = rs.get(1);
String $password = rs.get(2);
String $email = rs.get(3);
if($uid > 0) {
response.addHeader("P3P"," CP=\"CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR\"");

out.println("登录成功");
out.println($username);
out.println($password);
out.println($email);

String $ucsynlogin = uc.uc_user_synlogin($uid);
out.println("登录成功"+$ucsynlogin);

//本地登陆代码
//TODO ... ....
Cookie auth = new Cookie("auth", uc.uc_authcode($password+"\t"+$uid, "ENCODE"));
auth.setMaxAge(31536000);
//auth.setDomain("localhost");
response.addCookie(auth);

Cookie user = new Cookie("uchome_loginuser", $username);
response.addCookie(user);

} else if($uid == -1) {
out.println("用户不存在,或者被删除");
} else if($uid == -2) {
out.println("密码错");
} else {
out.println("未定义");
}
}else{
out.println("Login failed");
System.out.println(result);
}
%>

访问页面返回一段js:
登录成功
test3
test3
test3@huaqi.info
登录成功

1
<script type="text/javascript" src="http://localhost/api/uc.php?time=1474188863&amp;code=6dfdhvNXKRoUOFYTR3Jn3ORQ2LKDd6cI6X5p4RD3yxyh6gy3%2F%2FQAJ5u8URp7qR%2F%2F0jaIoha2g4MnGRtosanyDihDy%2BIyW0zNNAnjkGHoaC1uyga5U2py%2F6%2F4uolQKBJaVI%2FMsM%2BuFUlttWcSmS7mzQoN%2Be0tzvPFZg2Y" reload=“1”</script>

在浏览器中执行后访问 discus已保持登陆状态!

-------------本文结束感谢您的阅读-------------
Crazy Rico wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!
Crazy Rico 微信支付

微信支付

Crazy Rico 支付宝

支付宝

# java # web # discuz # php # 单点登录
Hexo搭建GitHub个人博客系统
十一假期随笔
  • 文章目录
  • 站点概览
Crazy Rico

Crazy Rico

33 日志
17 分类
39 标签
RSS
GitHub FCC E-Mail 慕课网 阿里云
  1. 1. 第一步配置config.properties
  2. 2. 第二步 配置web.xml,添加如下
  3. 3. 第三步 配置ucenter
  4. 4. 第四步 访问测试页
苏ICP备17004952号 © 2020 Crazy Rico | 90k | 1:22
由 Hexo 强力驱动 v3.9.0
|
主题 – NexT.Gemini v7.3.0
|
0%