用java来如何实现单点登录录大概有哪些种方法

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&& & 下一页 1 2 3 在门户项目中,经常会遇到如何实现单点登录的问题,下面就本人的经验做个总结。欢迎大家进行补充讨论。 单点登录的具体实现有很多种选择,包括: 采用专门的SSO商业软件: 主要有:Netgrity的Siteminder,已经被CA收购。Novell 公司的iChain。& & 下一页&1&2&3& & & & 在门户项目中,经常会遇到如何实现单点登录的问题,下面就本人的经验做个总结。欢迎大家进行补充讨论。 单点登录的具体实现有很多种选择,包括:采用专门的SSO商业软件: 主要有:Netgrity的Siteminder,已经被CA收购。Novell 公司的iChain。RSA公司的ClearTrust等。采用门户产品供应商自己的SSO产品,如:BEA的WLES,IBM 的Tivoli Aclearcase/" target="_blank" >ccess Manager,Sun 公司的identity Server,Oracle公司的OID等。这些商业软件一般适用于客户对SSO的需求很高,并且企业内部采用COTS软件如:Domino,SAP,Sieble的系统比较多的情况下采用。并结合身份管理。统一认证等项目采用。采用这些软件一般都要对要集成的系统做些改造,如在要集成的系统上安装AGENT。现在一般只提供常见软件如:Domino,SAP,Sieble,常见应用服务器:weblogic,websphere等的AGENT。要先统一这些系统的认证。一般采用LDAP或数据库。然后才能实现SSO。比较麻烦。另外,如果不想掏银子,也有OPEN SOURCE的SSO软件可选:主要有:http://www.josso.org/ https://opensso.dev.java.net/ http://www.sourceid.org 等。具体怎么样就不清楚了。& & 如果项目对SSO的要求比较低,又不想对要被集成的系统做任何改动,可采用下面介绍的方式简单实现:下面我们通过一个例子来说明。假如一个门户项目要对下面的几个系统做SSO。& & & & 用户在这些系统中的用户名,密码各不相同,如:员工号为001的员工在这些系统中的用户名,密码分别如下:& & 用户系统用户名密码001Portal系统A1234001邮件系统B2345001DOMINO系统CAAAA001报销系统DCCCC001工资系统EBBBB首先,建立员工在PORTAL系统中的用户名和其他系统中的用户名之间的对应关系& & 首先,要建立员工在PORTAL系统中的用户名和其他系统中的用户名之间的对应关系并保存。可保存在表中或LDAP中或文件系统中。当然要考虑这些系统之间的数据同步问题。比较好的方式是找到用户在这些系统中的都存在的唯一信息(如员工号,MAIL地址,姓名等)。通过唯一信息实时到各个系统中去取认证所需要的信息。就不需要考虑数据同步问题。比较实用。可以建立类似下面的表:密码可采用加密保存。如果是采用BEA的Weblogic Portal,可采用UUP来保存这些信息。& & (& & user& & varchar2(20),& & /*用户名*/& & app_name varchar2(20),& & /*应用系统*/& & architect varchar2(4),& & /*应用系统的架构BS或CS*/& & app_company varchar2(50),& & /*用户所属分公司*/ app_department varchar2(50),& & /*用户所在的部门*/ app_user varchar2(15),& & /*在该系统中的用户名*/& & app_passwd varchar2(15),& & /*在该系统中的密码*/& & app_cookie varchar2(30),& & /*COOKIE名称*/& & form_user varchar2(20),& & /*认证页面中FORM的用户名字段*/& & form_passwd varchar2(20),& & /*认证页面中FORM的密码字段*/& & app_special varchar2(20)& & /*其他*/ );& & 原文转自:http://www.ltesting.net
声明:该文章系网友上传分享,此内容仅代表网友个人经验或观点,不代表本网站立场和观点;若未进行原创声明,则表明该文章系转载自互联网;若该文章内容涉嫌侵权,请及时向
上一篇:下一篇:
相关经验教程
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.003 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益java cas 单点登录
一.教程前言教程目的:从头到尾细细道来单点登录服务器及客户端应用的每个步骤 单点登录(SSO):请看百科解释猛击这里打开 本教程使用的SSO服务器是Yelu大学研发的CAS(Central Authentication Server),官网:http://www.jasig.org/cas 本教程环境: Tomcat6.0.29 JDK6 CAS Server版本:cas ...
一.教程前言 教程目的:从头到尾细细道来单点登录服务器及客户端应用的每个步骤 单点登录(SSO):请看百科解释猛击这里打开 本教程使用的SSO服务器是Yelu大学研发的CAS(Central Authentication Server), 官网:http://www.jasig.org/cas 本教程环境: Tomcat6.0.29 JDK6 CAS Server版本:ca ...
目录 -- [CAS单点登录视频教程] 第06集[完] -- Cas认证 学习 票据认证FormsAuthentication
[CAS单点登录视频教程] 第05集 -- CAS服务器安装
[CAS单点登录视频教程] 第04集 -- tomcat下配置https环境
[CAS单点登录视频教程] 第03集 -- 配置 tomcat的 ssl
[CAS单点登录视 ...
目录 -- [CAS单点登录视频教程] 第06集[完] -- Cas认证 学习 票据认证FormsAuthentication
[CAS单点登录视频教程] 第05集 -- CAS服务器安装
[CAS单点登录视频教程] 第04集 -- tomcat下配置https环境
[CAS单点登录视频教程] 第03集 -- 配置 tomcat的 ssl
[CAS单点登录视 ...
目录 -- [CAS单点登录视频教程] 第06集[完] -- Cas认证 学习 票据认证FormsAuthentication
[CAS单点登录视频教程] 第05集 -- CAS服务器安装
[CAS单点登录视频教程] 第04集 -- tomcat下配置https环境
[CAS单点登录视频教程] 第03集 -- 配置 tomcat的 ssl
[CAS单点登录视 ...
CZTZ -JavaEE Web应用开发平台与CAS的单点登录产品进行了集成, CAS单点登录产品的默认的认证类是SimpleTestUsernamePasswordAuthenticationHandler,这个类的实现是当用户名和口令相等时认证通过,所以这个类肯定不能在生产环境使用的,现在需要将此类替换掉,实现一个基于数据库访问的认证方式.本文讲述如何实现这个类(数据源 ...
如果csdn看着不舒服,请移步/ae6623/item/34f6e23bb424bf,和本系列教程篇同步更新. 本篇教程cas-server端下载地址:解压后,直接放到tomcat的webapp目录下就能用了,不过你需要登录的话,要修改数据源,C:\tomcat7\webapps\casServer\WEB-INF\ ...
cas 单点登录(SSO)实验之二: cas-client参考文章:http://my.oschina.net/indestiny/blog/200768#comments/view/0bcc0d01e595.html接上一篇文章:cas 单点登录(SSO)实验之一: jasig cas-server 安装 ...
cas 单点登录(SSO)实验之一: jasig cas-server 安装参考文章:http://my.oschina.net/indestiny/blog/200768#comments/view/0bcc0d01e595.htmlSSO原理不多重复,需要理解的就一点,一个复杂系统需要一个唯一的验证服务 ...
因项目需要,使用了耶鲁大学的Cas单点登录方案,在java中使用一直正常,但是在.Net中碰到了循环重定向的问题,反复测试后,总算解决了,最终的配置如下: &?xml version=&1.0& encoding=&utf-8&?& &!-- 有关如何配置 ASP.NET 应用程序的详细信息,请访问 http:/ ...
单点登录(Single Sign On , 简称 SSO )是目前比较流行的服务于企业业务整合的解决方案之一, SSO 使得在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统.CAS(Central Authentication Service)是一款不错的针对 Web 应用的单点登录框架,本文介绍了 CAS 的原理.协议.在 Tomcat 中的配置和使用 ...
CAS单点登录(SSO)完整教程(1更新) 一.教程说明 前言 教程目的:从头到尾细细道来单点登录服务器及客户端应用的每个步骤单点登录(SSO):请看百科解释猛击这里打开本教程使用的SSO服务器是Yelu大学研发的CAS(Central Authentication Server), 官网:http://www.jasig.org/cas 本教程环境: T ...
一.教程前言 教程目的:从头到尾细细道来单点登录服务器及客户端应用的每个步骤 单点登录(SSO):请看百科解释猛击这里打开 本教程使用的SSO服务器是Yelu大学研发的CAS(Central Authentication Server), 官网:http://www.jasig.org/cas 本教程环境: Tomcat6.0.29 JDK6 CAS Server版本:ca ...
转载自micmiu – 软件开发+生活点滴[ / ] 本文目录: 一.概述 二.演示环境 三.JDK安装配置 四.安全证书配置 五.部署CAS-Server相关的Tomcat 六.部署CAS-Client相关的Tomcat 七. 测试验证SSO 一.概述 此文的目的就是为了帮助初步接触SSO和CAS 的人员提供一个入门指南,一步一步 ...
转帖地址:http://blog.csdn.net/turkeyzhou/article/details/5509725 单点登录(Single Sign On , 简称 SSO )是目前比较流行的服务于企业业务整合的解决方案之一, SSO 使得在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统.CAS(Central Authentication Ser ...
目录 Liferay开源门户系统之cas单点登录功能集成方法 一.概述 二.cas服务端配置 步骤1:准备好以下运行环境 步骤2:安装部署cas-server 步骤3:生成数字证书 步骤4:配制tomcat支持https协议 步骤5:测试 三.liferay支持cas的配置方法 四.其它web应用支持cas的配置方法 一.概述
liferay是java中的一个 ...
CAS单点登录(SSO)完整教程(1更新) 一.教程说明 前言 教程目的:从头到尾细细道来单点登录服务器及客户端应用的每个步骤单点登录(SSO):请看百科解释猛击这里打开本教程使用的SSO服务器是Yelu大学研发的CAS(Central Authentication Server), 官网:http://www.jasig.org/cas 本教程环境: T ...
CAS 是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目.CAS 具有以下特点: 开源的企业级单点登录解决方案. CAS Server 为需要独立部署的 Web 应用. CAS Client 支持非常多的客户端(这里指单点登录系统中的各个Web 应用),包括 Jav ...
本文目录: 一.概述 二.演示环境 三.JDK安装配置 四.安全证书配置 五.部署CAS-Server相关的Tomcat 六.部署CAS-Client相关的Tomcat 七. 测试验证SSO 一.概述 此文的目的就是为了帮助初步接触SSO和CAS 的人员提供一个入门指南,一步一步演示如何实现基于CAS的单点登录. CAS的官网:http://www.jasig.org/ca ...
在使用CAS单点登录页面上报以下错误: HTTP Status 500 - javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter ...java和Discuz论坛实现单点登录,通过Ucenter(用户管理中心) - 推酷
java和Discuz论坛实现单点登录,通过Ucenter(用户管理中心)
标题有点问题,没有进行修改。
一 Discuz论坛搭建步骤
1:服务器环境配置
服务器要支持php语言+支持mysql 5.0以上的数据库 + Apache服务器(支持网站的一个服务器,通过域名的能访问就可以了)
Msql5.0以上的数据库一个。
2:安装Discuz
(1)下载Discuz源码包
(2)解压源码包Discuz_X3.2_SC_GBK.zip(这里以Discuz X3/2为例)有三个文件,把&&&&&&&&&& 其中的upload文件夹里面的内容放在网站的根目录下。
是upload文件夹下面的所有内容放入网站根目录下,如果把upload整个文件夹放在网站根目录访问的地址就是
(3)访问域名地址就开始安装如图:参考地址:
配置数据库信息:
提前创建好mysql数据库,用户/密码,这里进行配置。同时给设置一个管理员账号和密码:点击下一步
注意:一定是mysql 5.0以上的数据库版本
如果没有问题的话就安装成功了。它会自动创建对应的数据库表等相关信息。
然后访问域名就直接可以访问论坛了。
3:Discuz的简单配置介绍
(1)前台登录及管理员功能
如果是管理员的话会有一些管理信息
如果是管理员浏览帖子的话,会有“置顶”,“精华”,“明亮”等操作,如图:
具体还有很多,这里不一一介绍。
(2)后台管理心中
管理中心,就是进入后台管理的入口。主要是网站的风格,和布局
管理中心后台有很多功能,首先需要设置的是论坛大致板块,如下图:
对应的前台如下图:
我理解的时间也有限,具体设置还需要多进行操作,这里不进行逐个说明。
二 Discuz论坛与java无缝对接(单点登录)
1: Discuz和java对接的原理
Discuz和java对接需要一个中间件,它就是Ucenter。Comsenz(康盛)的UCenter当前在国内的单点登录领域占据绝对份额,其完整的产品线令UCenter成为了账号集成方面事实上的标准。基于UCenter,可以将Comsenz旗下的Discuz!(社区论坛系统)、SupeSite(门户CMS系统)、X-Space(博客系统)从用户资源层面进行无缝整合,使得账号实现统一管理,在任何一个系统中进行注册、登录、注销等操作时,该账号在其他系统中的会话状态也将同步更新,最终实现一号通的单点登录模式。
使用ucenter进行同步操作,主要依托于ucenter& server 和ucenter client之间的api接口进行通讯。要使得通讯成为可能,首先要通过ucenter管理所用应用(通过配置使得当前应用和ucenter产生联系,也就是通讯成功)。其他应用通过挂接到ucenter的接口上,从而使得某些数据可以进行同步操作。
2 : Discuz和Ucenter通道的配置
(1)Ucenter用户管理中心的简单介绍
Discuz和Ucenter都属于Comsenz(康盛)公司的产品,所以Discuz和Ucenter之间的通信通道非常容易建立。
Discuz中附带的有Ucenter应用程序例如:
之前Discuz论坛安装之后访问地址是http://localhost/ upload,那么Ucenter的访问地址是http://localhost/ upload/uc_server,登录界面如下:
输入之前的管理员密码即可登录成功!
后台管理页面如下
(2)Ucenter于Discuz通道建立。
我们如果用的是Discuz自带的Ucenter,他与Discuz就已经默认是互通的,我可以直接来用也可以重新配置。建立成功如下:
注释:这里有系统默认的我们就直接用,下面Ucenter于java建立通道的时候会详细说明怎么建立通道,建立通信通道的方式都是一样的。
3 : Java和Ucenter通道的配置
(1)Ucenter端添java web网站通道
登录成功之后
应用管理》添加应用
标红的为主要填写的。其他的可以不填写。
安装方式:自定义
应用类型:其他
应用名称:JAVA项目名称,可随意
应用主URL:JAVA项目的访问地址,例如:http://localhost:8080/javaTest
通信密钥:任意字符,例如:123456
应用接口文件名称:
,这个不要改,前面也不要加/api/,UCenter在与其通信时会自动转换为:
http://localhost:8080/javaTest/api/uc.php
是否开启同步登录:是
是否接受通知:是
以上的配置项必填,其他保持为空即可
点击“提交”,保存成功后,
,下面的配置中会需要。
此时返回应用列表,UCenter会自动进行通信验证,不出意外肯定会出现“
”的字样,先不必管它
因为java端也需要一些配置
(2)java web网站端的配置
discuz-ucenter-api-for-java
”的开源项目网站中下载相关的API文件,也可以从这里下载:JAVA_UCenter.zip
这里给一个比较好的下载地址,包括源码,及jar包文件:
2、将JAVA_UCenter.zip解压、覆盖到你的JAVA项目中,其中的新文件有:
src/config.properties:本地的JAVA项目与UCenter的接口配置文件(
需要根据实际环境进行配置
src/api/ucenter/Base64.java
src/api/ucenter/Client.java:
操作封装成的客户端对象,我们在项目中主要用它来与
src/api/ucenter/PHPFunctions.java
src/api/ucenter/UC.java:
项目用来接收
同步命令的
接口,其访问地址必须为:
/api/uc.php
src/api/ucenter/XMLHelper.java
WebRoot/WEB-INF/web.xml:
主要就是将
src/api/ucenter/UC.java
(1) src/config.properties中的代码如下:
# ================================================
# Ucenter API for JAVA
# ================================================
UC_API = http://localhost:9201
UC_KEY = 123456
UC_APPID = 2
UC_CONNECT =&
其中,UC_API表示UCenter的访问地址,UC_KEY就是在UCenter中添加新应用时定义的通信密钥,UC_APPID表示新应用的APPID,就是刚才记下的那个。
除这三项外,其他的配置保持为空即可。
(2) WebRoot/WEB-INF/web.xml中的代码如下:
&?xml version=&1.0& encoding=&UTF-8&?&
&web-app version=&2.4&&
xmlns=&/xml/ns/j2ee&&
xmlns:xsi=&http://www.w3.org/2001/XMLSchema-instance&&
xsi:schemaLocation=&/xml/ns/j2ee&
/xml/ns/j2ee/web-app_2_4.xsd&&
&display-name&同步UC Server发出的操作指令&/display-name&
&servlet-name&UC&/servlet-name&
&servlet-class&api.ucenter.UC&/servlet-class&
&load-on-startup&2&/load-on-startup&
&/servlet&
&servlet-mapping&
&servlet-name&UC&/servlet-name&
&url-pattern&/api/uc.php&/url-pattern&
&/servlet-mapping&
&/web-app&
别的无所谓,只需注意这一行:&url-pattern&/api/uc.php&/url-pattern&
3、JAVA端配置完成,在eclipse中启动调试模式
4、再次返回到UCenter的控制台,点击应用管理,此时应该会看到绿色的“
到这里Discuz和Ucenter之间的通信通道与java和Ucenter之间的通信通道都已经建立成功,下面就可以在2.3.4看具体如何开发
2.3.4& Java端具体代码实现
(1)java网站web 网站注册同步Discuz论坛注册
步骤说明:
注册java网站web网站 & 调用Client里面的UC注册Discuz论坛的接口(uc_user_register) & 判断注册结果
具体代码实现(仅供参考)
//java网站网站的注册
falg = tempUserService.insert(tempUserVO);
//同步论坛的注册
Client uc =
String $returns = uc.uc_user_register(tempUserVO.getUsername(), tempUserVO.getPass(), tempUserVO.getEamil());
$uid = Integer.
($returns);&
($uid &= 0) {&
($uid == -1) {&
.print(&用户名不合法&);&
($uid == -2) {&
.print(&包含要允许注册的词语&);&
($uid == -3) {&
.print(&用户名已经存在&);&
($uid == -4) {&
.print(&Email 格式有误&);&
($uid == -5) {&
.print(&Email 不允许注册&);&
($uid == -6) {&
.print(&该 Email 已经被注册&);&
.print(&未定义&);&
.println(&id:&+$uid);
.println(&添加成功!&);
.println(&添加失败!&);
(2)java网站web 网站登录,同步Discuz论坛登录
步骤说明:
登录民信web网站 & 调用Client里面的UC登录接口获取用户信息 & 接受返回的用户XML信息并解析 & 调用Client登录DIscuz论坛的登录接口 & 接受返回过来的js代码 & 输出到java网站web网站 & 跳转到论坛地址(此时已经你会发现用户已经登录)
具体代码实现(仅供参考)
//网站的登录
TempUser tempUser =& tempUserService.queryByName(tempUserVO.getUsername());
.println(&结果:&+tempUser.getAddress()+&& ==&+tempUser.getEamil());
request.getSession().setAttribute(&tempUser&, tempUser);
论坛的登录
Client uc =
String $result = uc.uc_user_login(tempUser.getUsername(), tempUser.getPass());
String $ucsynlogin = &&;
LinkedList&String& rs = XMLHelper.
uc_unserialize
($result);
(rs.size()&0){
$uid = Integer.
(rs.get(0));
String $username = rs.get(1);
String $password = rs.get(2);
= rs.get(3);
($uid & 0) {
$ucsynlogin = uc.uc_user_synlogin($uid);
($uid == -1) {
.println(&用户不存在,或者被删除&);
($uid == -2) {
.println(&密码错&);
.println(&未定义&);
//设置本地
登录的cookie信息,cookie存活时间
//直接访问论坛就有用户信息了
response.setCharacterEncoding(&UTF-8&);
//同步Cookie信息
// &&&&&&&&&&& && response.addHeader(&P3P&,& CP=\&CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR\&&);
// &&& &&&&&&&& Cookie
= new Cookie(&
&, uc.uc_authcode($password+&\t&+$
, &ENCODE&));
// &&& &&&&&&&& auth.setMaxAge();
// &&& &&&&&&&& //auth.setDomain(&
&);//设置本地cookie
// &&& &&&&&&&& response.addCookie(
// &&& &&&&&&&& Cookie user = new Cookie(&Discuz_loginuser&, $
// &&& &&&&&&&& response.addCookie(user);
//把返回过来的
文件直接输出在页面上,然后跳转到论坛网站首页就已经是登录之后的
PrintWriter out = response.getWriter();
out.write($ucsynlogin);
out.flush(); &&& &&&&& }
(Exception e) {
Auto-generated catch block
e.printStackTrace();
.println(&Login failed&);
//&&& System.out.println(&登录的结果:&+$result);
(3)java网站退出,论坛同步退出
步骤说明:
java网站网站注销 & 调用Client里面的uc_user_synlogout同时注销论坛用户
具体代码实现(仅供参考)
Client uc = new Client();
String $ucsynlogout = uc.uc_user_synlogout();
System.out.println(&退出成功&+$ucsynlogout);
(4)java网站修改用户信息同步论坛资料信息
步骤说明:
修改用户保存 & 获取之前论坛用户信息 & 调用接口进行修改uc_user_edit
具体代码实现(仅供参考)
Client uc =
uc.uc_user_edit($username, $oldpw, $newpw, $email, $ignoreoldpw, $questionid, $answer)
主要代码片段
(5)论坛登录同步登录java网站web
我们来看看discuz那边登录了,java这边怎么实现同步登录。在uc.java里有一个doanswer的方法。所有同步操作都在这个方法里完成。其逻辑是这样的,uc这个类继承了HttpServlet。当ucenter发出通知时,会访问这个servlet.并执行他的doGet()方法。doGet()调用doAnswer().
String $code = request.getParameter(&code&);会传一个code进来(加密了的)。然后调用$code = new Client().uc_authcode($code, &DECODE&);进行解密操作。新建一个Map,Map&String,String& $get = new HashMap&String, String&();然后根据解密出来的code的内容封装这个Map.调用这个方法,parse_str($code, $get); 经过以上操作后,所有同步操作需要的信息都在map里,如action。action代表的是什么操作,如同步登录,同步退出,修改密码等。还有其他信息,如username.登录的用户名。改密码时还会传新密码过来。所有的这些都包含在这个叫$get的Map里。然后我们就可以进行我们自己的逻辑操作了。(以上逻辑不想理解没关系,你只要知道当你在discuz登录之后,uc.java的doAnswer()方法就会被调用,你所需要的一切信息都包含在$get这个Map里)
操作到这里,你一定想吐槽笔者!不行啊,discuz那边登录了,java这边完全没反应啊!!doAnswer方法没有被调用啊!是的,你还需要到discuz后台做一些设置。管理中心-&站长-&ucenter设置。把ucenter连接方式改为接口方式。然后,你登录discuz时,doAnswer()方法就会被调用了。(其他操作如退出也一样)
注意乱码问题:
Discuz登录同步java网站web网站登录,中文乱码问题
到这里,我们又遇到了中文的问题了,discuz用中文登录的时候不行啊!是的,这确实是个比较麻烦的问题。笔者也弄了好久。原因是这样的,上面提到过,传进来的$code是需要uc_authcode()方法进行解密的,当中文的时候解密出来的$code是&&.解决方法如下:在Client.java的uc_authcode()方法里找到这句String $result = $result1.substring(0, $result1.length());并把它改成:
String $result= $result1.toString();
$result=new
String($result.getBytes(&iso-8859-1&),&GBK&);
(Exception e) {
$result = $result1.substring(0, $result1.length());
// TODO: handle exception
这样还不行,解密出来的code中文部分仍是乱码。所以在uc.java的$code = new Client().uc_authcode($code, &DECODE&);这句下面还要加上$code = new String($code.getBytes(&GBK&),&UTF-8&);可能有人会说直接转成utf-8不行吗?为什么要先转成gbk呢?如果直接转成utf-8的话,解密出来的$code是&&。到此中文的问题就得到解决了。笔者下载的是GBK版本的discuz,其他情况自己改一下编码应该没问题。
已发表评论数()
已收藏到推刊!
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
没有分页内容
图片无法显示
视频无法显示
与原文不一致}

我要回帖

更多关于 如何实现单点登录 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信