lwhoami
2010-07-08 14:08 阅读 188
已采纳

jasig cas单点登录中的如何统一注销


最近在做与单点登录有关的内容,
软件有
roller4.0.1
jasig CAS 3.3.2
acegi security 的 sample war
已经可以完成统一登录,但碰到以下问题

1.如何在第一次访问 roller时,就能知道用户是否登录了,
a.现在的情况是用户访问roller时,并不清楚是否已经登录了,只有在点击某一个链接时,发现没有权限才会去 cas服务器上检查是否已经登录了,如果没有就会转到 cas的登录界面,登录后转到 roller应用中,如果已经登录了则会直接转到roller的应用中,
b.我希望的是用户第一次访问roller时,就能知道是否已经登录了,如果没有登录,则继续当前的访问,当碰到需要权限时,就转到登录界面,如果已经登录了,则会在头部某个地方显示用户名

我的想法是建一个 filter过滤roller的任何一个 url,然后在首次访问时,就会往session写入一个标记,并转到cas上检查是否已经登录了,但感觉思路还是有点乱

2. 如何统一注册用户,cas只管登录,而每个应用都会包括用户的,如何在cas上注册了新用户后,也能够在roller中注册这个用户,
现在的做法是在roller中重写一个servlet,在里面把用户信息写到数据库中,但查看过 roller的Register代码后,看到里面有个 与SSO相关的代码,似乎有与注册新用户相关,请问如何调用这个现成的来注册新用户

3.如何统一注销
在roller中注销后,也可以在 cas上注销,同时也会可以 acegi sample上注销
我现在的作法是在 roller的注销页面logout-redirect.jsp 加了个 response.sendRedirect(.. cas/logout),结果是可以看到cas上的注销页面,但是再访问acegi时,结果是没有注销的,

4.另外,我没找到 cas中加入 cookie的地方,我想改变cookie,使其保存一段时间,但没找到,熟悉的告诉我一声

再次感谢

问题补充
我想了一下,第一个问题的意义不大,因为只有在访问某个需要权限的时候,才会去验证用户是否登录,是否有权限了,唯一的差别就是头部某个位置显示已经登录的用户名罢了

问题补充
统一注册,我现在的方法是在cas这边注册后,将用户名和密码传给roller,然后加几个默认的值,使其在 roller注册新用户
-----------------------------
统一注销,关闭浏览器是没问题的,
但另一个问题,如果我想要保持登录状态到cookie中,下次再次访问的时候是不是应该自动登录了呢,这里我还没发现如果在cas里设置

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

3条回答 默认 最新

  • 已采纳
    weixin_42525277 weixin_42525277 2010-07-08 14:08

    在roller中加入CAS client的Filter,需要保护的资源都保护起来,登录后的用户信息应该需要你自己写吧,登录后从session取出用户名就行啊。
    统一注册,我不太了解roller这个东西,不清楚他实现的sso,如果你在roller注册用户,那么可能也需要将注册消息发送给CAS。
    统一注销在你注销后关闭浏览器就应该生效了,这里应该是在CAS中remove掉session就可以了。

    点赞 评论 复制链接分享
  • cnhzliye cnhzliye 2010-07-08 14:08

    IE关了。。。。

    点赞 评论 复制链接分享
  • weixin_42525277 weixin_42525277 2010-07-08 14:08

    [quote="laorer"]统一注册,我现在的方法是在cas这边注册后,将用户名和密码传给roller,然后加几个默认的值,使其在 roller注册新用户

    统一注销,关闭浏览器是没问题的,
    但另一个问题,如果我想要保持登录状态到cookie中,下次再次访问的时候是不是应该自动登录了呢,这里我还没发现如果在cas里设置[/quote]

    你是不是想要remember me的功能?看看下面的内容。
    http://waitingmyself.blog.163.com/blog/static/157213320091205462086/

    点赞 评论 复制链接分享

相关推荐