java UCnter 单点登录 对接。
前提 PHP项目要部署成功。论坛能正常访问。
先配置 应用

1.是论坛应用
4.是java服务器,也就是你java登录的项目。 必须通信成功。

。主应用IP就是你java项目的入口。 例如:http://192.168.1.100:8080 注意不要写成 http://192.168.1.100:8080/ 后面不要加斜杠。
进 bbs/admin.php

设置好,激活方式。
论坛的配置完了。再配置java项目。

java 项目 resourse 也就是类路径下面。会有一个config.properties 文件 。后面。有说明为什么要有这个。
这个配置自己论坛里面的信息。

这个必须放在java项目里面。
web.xml 加入

https://code.google.com/p/discuz-ucenter-api-for-java/ 项目中的文件。api.ucenter config.perproties 别人整的开源项目。拷贝就行。
配置工作准备完毕
实现java登录 同步到bbs论坛。
java代码:
在java登录通过之后。
登录:
UcSynLogin ucSynLogin = new UcSynLogin();
ucSynLogin.getUcSynLogin(map,password,User);
注册:
UcSynReg reg = new UcSynReg();
reg.ucSynReg(map,password,user);
代码:
/**
* @author zhourong
* @date 2018/9/27
*/
public class UcSynReg extends BaseUcSynLogin {
private Logger log = LoggerFactory.getLogger(UcSynReg.class);
private UcSynLoginService ucSynLoginService = new UcSynLoingServiceImpl(); public void ucSynReg(Map map, String password, User loginUser){
String userName = loginUser.getUserName();
String email = loginUser.getEmail();
String loginUrl = null ;
log.info("用户信息:"+loginUser);
log.info("前端返回信息:"+map);
log.info("密码:"+password);
if (loginUser == null ){
log.info("用户为空");
ucSynLoginService.setMap(map,loginUrl,loginUser);
return ;
}
if(StringUtils.isBlank(email)){
log.info("邮箱为空");
ucSynLoginService.setMap(map,loginUrl,loginUser);
return ;
}
String userId = ucSynLoginService.getSynUserReg(userName,password,email,client);
if(StringUtils.isEmpty(userId) || Integer.parseInt(userId) < 1){
ucSynLoginService.setMap(map,loginUrl,loginUser);
return ;
}
loginUrl = ucSynLoginService.getSynLoginUrl(userId,client);
log.info("同步登录返回链接:"+loginUrl);
ucSynLoginService.setMap(map,loginUrl,loginUser);
}
UcSynReg(注册并登录同步)
/**
* @author zhourong
* @date 2018/9/27
*/
public class UcSynLogin extends BaseUcSynLogin { private Logger log = LoggerFactory.getLogger(UcSynLogin.class); private static final String ZERO = "0"; private UcSynLoginService ucSynLoginService = new UcSynLoingServiceImpl(); /**
* 登录
*/ public void getUcSynLogin( Map map, String password,User loginUser){
String loginUrl = null;
String userName = loginUser.getUserName(); String userId = null;
log.info("入参--->USER:"+loginUser.toString()+"Map:"+map);
Long start = System.currentTimeMillis();
if (loginUser == null ){
log.info("用户为空");
ucSynLoginService.setMap(map,loginUrl,loginUser);
return ;
}
String email = loginUser.getEmail();
if(StringUtils.isBlank(email)){
log.info("邮箱为空");
ucSynLoginService.setMap(map,loginUrl,loginUser);
return ;
}
String synUser = ucSynLoginService.getSynUser(userName,client);
if(StringUtils.isEmpty(synUser) || ZERO.equals(synUser)){
userId = ucSynLoginService.getSynUserReg(userName,password,email,client);
if(StringUtils.isEmpty(userId) || Integer.parseInt(userId) < 1){
ucSynLoginService.setMap(map,loginUrl,loginUser);
return ;
}
loginUrl = ucSynLoginService.getSynLoginUrl(userId,client);
log.info("同步登录返回链接:"+loginUrl);
} else {
LinkedList<String> result = new LinkedList<String>();
result = XMLHelper.uc_unserialize(synUser);
if(CollectionUtils.isEmpty(result)){
ucSynLoginService.setMap(map,loginUrl,loginUser);
return ;
}
userId = result.get(0);
log.info("用户ID:"+result.get(0));
log.info("用户名:"+result.get(1));
log.info("用户邮箱:"+result.get(2));
loginUrl = ucSynLoginService.getSynLoginUrl(userId,client);
log.info("同步登录返回链接:"+loginUrl);
}
ucSynLoginService.setMap(map,loginUrl,loginUser);
Long end = System.currentTimeMillis();
Long time = end - start ;
log.info("同步登录访问时间:"+time);
log.info("同步返回结果:"+map);
return ;
} }
UcSynLogin(同步登录)
/**
* @author zhourong
* @date 2018/9/27
*/
public class UcSynLoingServiceImpl implements UcSynLoginService { private Logger log = LoggerFactory.getLogger(UcSynLoingServiceImpl.class); @Override
public String getSynLoginUrl(String userId,Client client ){ try{
String loginUrl = client.uc_user_synlogin(Integer.parseInt(userId));
log.info("同步登录链接:"+loginUrl);
return loginUrl;
} catch (Exception e) {
log.error("获取同步登录信息错误:"+e.getMessage());
}
return null;
} @Override
public String getSynUser(String userName,Client client){
try{
String userXml = client.uc_get_user(userName,0);
log.info("获取同步用户信息:"+userXml);
return userXml;
} catch (Exception e) {
log.error("获取同步用户信息失败:"+e.getMessage());
}
return null ;
} @Override
public String getSynUserReg(String userName,String password,String email,Client client){
try{
String userId = client.uc_user_register(userName,password,email);
log.info("获取用户ID:"+userId);
return userId;
} catch (Exception e){
log.error("获取同步注册信息失败:"+e.getMessage());
}
return null;
} @Override
public void setMap(Map map ,String loginUrl,User user){
log.info("同步链接:"+loginUrl);
log.info("email:"+user.getEmail());
map.put("loginUrl",loginUrl);
map.put("email",user.getEmail());
return ;
}
}
登录,注册,获取用户信息
同步之后。会返回一段js代码。
<script type="text/javascript" src="http://bss/api/uc.php?time=1538017525&code=4f71%2BluBYfNyi8rZSREDp9UDMb%2BNAuDfnkmR1kpqMOeT0ENE7ZNBaY5SGVJVqkBPvotrWCFo7Vq4R0D4XJ9z2LCh0Za8XmRL2sUNVZFYWf3kXqGRDPENLBGHrK52GngCgjoDDoRxzfK7%2FYAAi525hGJWGhs4V30en58yaz7jUVV5DQ" reload="1"></script>
执行一下js代码 。然后访问一下bbs就行了。 /uc_client/client.php
HTTPS: 访问 要采用数据库方式 。同时论坛退出会报301
解决方式:
https://www.itsvse.com/forum.php?mod=viewthread&tid=4798 原:$ port =!empty($ matches ['port'])?$ matches ['port']:80;
改:$ port =!empty($ matches ['port'])?$ matches ['port'] :( $ matches ['scheme'] =='https'?443:80); 原:if(!$ fp = @fsocketopen(($ ip?$ ip:$ host),$ port,$ errno,$ errstr,$ timeout)){
改:if(!$ fp = @fsocketopen(($ scheme =='https'?'ssl':$ scheme)。'://'。($ scheme =='https'?$ host:($ ip?$ ip :$ host)),$ port,$ errno,$ errstr,$ timeout)){
java UCnter 单点登录 对接。的更多相关文章
- JAVA CAS单点登录(SSO) 教程
一.教程前言 教程目的:从头到尾细细道来单点登录服务器及客户端应用的每个步骤 单点登录(SSO):请看百科解释猛击这里打开 本教程使用的SSO服务器是Yelu大学研发的CAS(Central Auth ...
- JAVA CAS单点登录(SSO)
一.教程前言 教程目的:从头到尾细细道来单点登录服务器及客户端应用的每个步骤 单点登录(SSO):请看百科解释猛击这里打开 本教程使用的SSO服务器是Yelu大学研发的CAS(Central Auth ...
- 【Java】单点登录(SSO)
单点登录介绍 SSO英文全称Single Sign On,单点登录.SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统.它包括可以将这次主要的登录映射到其他应用中用于同一 ...
- java之单点登录(SSO)
单点登录(SSO):SSO是指在多个应用系统中个,用户只需要登陆一次就可以访问所有相互信任的应用系统.它包括可以将这次主要的登录映射到其他应用中用于同一用户的登陆的机制. SSO的实现过程: 通过上述 ...
- java和Discuz论坛实现单点登录,通过Ucenter(用户管理中心)
标题有点问题,没有进行修改. 一 Discuz论坛搭建步骤 1:服务器环境配置 服务器要支持php语言+支持mysql 5.0以上的数据库 + Apache服务器(支持网站的一个服务器,通过域名的能访 ...
- 【Java EE 学习 68】【单点登录】【两种单点登录类型:SSO/CAS、相同一级域名的SSO】
单点登录:SSO(Single Sign On) 什么是单点登录:大白话就是多个网站共享一个用户名和密码的技术,对于普通用户来说,只需要登录其中任意一个网站,登录其他网站的时候就能够自动登陆,不需要再 ...
- jasig CAS 实现单点登录 - java、php客户端登录实现
jasig CAS项目本身就是一个完整的CAS单点登录服务 1.服务端需要把 认证处理类.用户属性返回值处理类 调整成我们自己处理类即可实现单点登录 2.java客户端需要引入cas-client- ...
- 点单登录原理和java实现简单的单点登录
引用自:http://blog.csdn.net/zuoluoboy/article/details/12851725 摘要: 单点登录(SSO)的技术被越来越广泛地应用到各个领域的软件系统当中.本文 ...
- java单点登录系统CAS的简单使用
转:http://blog.csdn.net/yunye114105/article/details/7997041 背景 有几个相对独立的java的web应用系统, 各自有自己的登陆验证功能,用户在 ...
随机推荐
- Linux shell基础知识(上)
Linux shell基础知识(上) 目录 一.shell介绍 二.命令历史 三.命令补全和别名 四.通配符 五.输入输出重定向 六.管道符和作业控制 七.shell变量 八.环境变量配置文件 九.b ...
- JavaScript实现本地图片上传前进行裁剪预览
本项目支持IE8+,测试环境IE8,IE9,IE10,IE11,Chrome,FireFox测试通过 另:本项目并不支持Vue,React等,也不建议,引入JQuery和Vue.React本身提倡的开 ...
- 王者荣耀交流协会第5次Scrum立会
开会时间:2017年10月31日下午18:00-18:31 共计31分钟 开会地点:一食堂二楼靠近窗户倒数第四排 今日完成工作进度: 王超同学完成了将生成饼状图原型整合到程序中 立会内容: 添加了新 ...
- 洛谷 P1763 状态压缩dp+容斥原理
(题目来自洛谷oj) 一天,maze决定对自己的一块n*m的土地进行修建.他希望这块土地共n*m个格子的高度分别是1,2,3,...,n*m-1,n*m.maze又希望能将这一些格子中的某一些拿来建蓄 ...
- 导入maven项目导入依赖不会报错,但使用的jar会标红
方法1: 1.通过编译找到报错的jar; 2.在 repository找到此jar,一般未下载完大小为1k我的是这样(); 3.删除未下载完全的jar,在项目上执行maven reimport会重新下 ...
- 19/03/13python学习笔记
1.变量命名 name1 = 1 name2 = "sunj" 2.命名变量的规则 (1.变量是字母.数字.下划线的组合(2.不能以数字开头(3.不能用关键词命名变量(4.变量中间 ...
- html走马灯效果
实现跑马灯的方法很多,其中最简单的是采用一句Html代码来实现,我们在需要出现跑马灯效果的地方插入“<marquee>滚动的文字</marquee>”语句,它的效果如下所示: ...
- webpack学习笔记(三)
访问网址: https://github.com/webpack/analyse "scripts": { "dev-build": "webpack ...
- 什么是pytorch(2Autograd:自动求导)(翻译)
Autograd: 自动求导 pyTorch里神经网络能够训练就是靠autograd包.我们来看下这个包,然后我们使用它来训练我们的第一个神经网络. autograd 包提供了对张量的所有运算自动求导 ...
- 【转载】Win10系统桌面右键新建没有Word、Excel、PPT怎么恢复?
Win10系统桌面右键新建没有Word.Excel.PPT怎么恢复? 以下正文转载至: 网址:http://www.xitongzhijia.net/xtjc/20170307/93471.html ...