问题描述
大家好: 小弟最近在做一个需要SSO的系统,一开始选择了JOSSO,不过使用起来非常的不顺手,于是转投CAS,目前CAS的功能基本上都实现了,但是就是有两点没法实现:1.CAS是用来做SSO的,但是我现在需要禁止用户重复登录,就是用户登陆过一次之后,在其他的机器(或浏览器上)不允许此用户再次登录,请问这个问题如何解决?2.CAS默认编码貌似都是UTF8的,可是为何我在配置用户登录后返回更多信息的时候还是出现了拼接XML文件时出现乱码问题?我在CAS的web.xml内已经加入了字符编码的filter依然没有起到作用。不过第二个问题不着急,实在不行我可以暂时不实现。希望各位前辈能帮我解决第一个问题。当前用户库里有一个字段是专门用来记录用户登录的sessionid的,目前我打算修改CAS的源码,但是又没有任何资料显示CAS是否已经自带了这种放置用户重复登录的功能。所以想请教各位做过CAS SSO的前辈给一个明确的答案。如果CAS已经自带了放置用户重复登录的功能,请问如何实现? 问题补充:moyan_java 写道
解决方案
第一个问题我不理解你说的用户重复登录,CAS本来就是解决点单登录问题,怎么还存在在别的系统登录呢。被集成应用是可以通过部署的CAS来进行登录检验的。如果对CAS不熟悉可以自己动手写一个,两天时间应该可以实现单点登录的基本功能。我理解的流程应该是:浏览器-->应用1-->被filter拦截并验证(未登录)-->重定向到CAS-->进行登录后重定向到应用1-->filter拦截验证(已经登录)-->向CAS获取用户数据-->放过请求第二个问题你拼接XML时是不是把中文写入了源码中,如果是应该注意源码的编码是不是UTF-8,如果是从数据库中查出,则应该注意数据库查出中文是否是UTF-8.另外接收XML是因该也注意相应的解析编码。也许我说的不清楚,但希望对你有帮助。
解决方案二:
不许登陆.....我见过可怕的设计了...你确定不是把头一个登陆的人强制下线?