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);@Overridepublic 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;}@Overridepublic 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 ;}@Overridepublic 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;}@Overridepublic 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.phpHTTPS: 访问 要采用数据库方式 。同时论坛退出会报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)){

posted on 2018-09-27 20:29 zhouixi 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/1-Admin/p/9715420.html

java UCnter 单点登录 对接。相关推荐

  1. C# ASP.NET程序员整合Java门户单点登录PHPwind论坛博客软件集成项目经验总结

    为什么80%的码农都做不了架构师?>>>    有人曾问,如何正确估算项目周期?你是天天写C#程序的程序员,若做了一个 PHPwind 的单点登录,那估计需要几天时间? 客户只提了一 ...

  2. java heroku_使用Spring Boot和Heroku在20分钟内完成Java的单点登录

    java heroku 建筑物身份管理,包括身份验证和授权? 尝试Stormpath! 我们的REST API和强大的Java SDK支持可以消除您的安全风险,并且可以在几分钟内实现. 注册 ,再也不 ...

  3. 使用Spring Boot和Heroku在20分钟内完成Java的单点登录

    建筑物身份管理,包括身份验证和授权? 尝试Stormpath! 我们的REST API和强大的Java SDK支持可以消除您的安全风险,并且可以在几分钟内实现. 注册 ,再也不会建立auth了! 大规 ...

  4. Java 实现单点登录功能

    J2EE社区 苟有恒,何必三更起五更眠; 最无益,只怕一日曝十日寒. posts - 238, comments - 317, trackbacks - 0, articles - 16 导航 首页 ...

  5. java sso单点登录源码_Java单点登录系统 sso源码下载

    这是一个使用Java开发的单点登陆系统(sso). 运行截图 单点登陆介绍 单点登录,这就是我们通常称之为SSO.一般来说,大型系统平台将使用这些东西.它解决了频繁登录和验证的过程,即用户的一次登录被 ...

  6. Java开发 - 单点登录初体验(Spring Security + JWT)

    目录​​​​​​​ 前言 为什么要登录 登录的种类 Cookie-Session Cookie-Session-local storage JWT令牌 几种登陆总结 用户身份认证与授权 创建工程 添加 ...

  7. 4a安全管控 java cas_单点登录与权限管理本质:单点登录介绍

    继续介绍「单点登录与权限管理」系列的第一部分:单点登录与权限管理本质,前两篇介绍了session与cookie 和 HTTP重定向 ,有了他们,浏览器就可以在多个系统间自动交互,实现自动登录. 本篇介 ...

  8. java domino 单点登录_Domino单点登录LTPAtoken生成原理

    Domino单点登录LTPAtoken生成原理 一.WebSphere与Domino之间的SSO 首先让我们来了解一下Websphere与Domino之间是怎么完成SSO的: 1.Web用户向Webs ...

  9. java domino 单点登录_关于 WebSphere Portal, Domino 扩展产品以及Domino 单点登录(SSO)的疑难解答...

    索引: I. 每个产品的正确测试方法 II. 关于这三个产品的常规设置和配置 III. 对于 QuickPlace 服务器的其他步骤 IV. 对于 Sametime 服务器的其他步骤 V. 当 Por ...

最新文章

  1. 汇编语言(王爽 第三版)检测点9.1 解决-a无法输入jmp dword ptr es:[1000h]
  2. 在自行车论坛看到的有趣帖子
  3. 数字基带传输与码间干扰
  4. 2022,普平数据中心招聘来啦!
  5. 序列化技术的选型-技术层面
  6. 新建一个文件夹服务器,云服务器中新建文件夹命令
  7. 并发请求数_nginx如何限制并发连接和请求数?
  8. 网络新潮文化:Wiki不完全手册
  9. 【Python3网络爬虫开发实战】1.3.1-lxml的安装
  10. mybatis一个方法执行多条sql_精尽MyBatis源码分析——SQL执行过程之Executor!
  11. 我和Django那些事儿(8)----相册django插件photologue,jQuery插件Slides
  12. Android虚拟键盘上下左右键按下和弹起的响应事件
  13. 干掉visio,这是一款免费又好用的画图神器
  14. matlab软件topsis分析,基于AHP—TOPSIS的渗透测试工具的综合评价方法与流程
  15. R语言经纬度度分秒转小数点
  16. 径向基神经网络与多层感知器的比较
  17. 为什么我的电脑显示rpc服务器不可用,电脑提示RPC服务器不可用解决办法
  18. 我奋斗了18年不是为了和你一起喝咖啡。
  19. 《计算机网络:自顶向下方法》阅读笔记
  20. Atmega16驱动三轴加速度传感器MMA7455

热门文章

  1. js拾遗: replace 替换参数
  2. PAT1021. 个位数统计
  3. 差分进化算法原理及matlab代码实现
  4. c 语言 二维数组地址,C/C++ 关于一维或二维数组首地址表示含义
  5. cocos2dx arm64 jpg格式的不显示_相机保存照片你选RAW还是JPG?这里面大有讲究
  6. asp/php招聘,招聘ASP与PHP相关岗位的笔经
  7. 05NumPy--5.4随机数
  8. SAP License:IMG子菜单
  9. 天池实验室-Task01-Python入门(上)
  10. select for update作用