我现在一共有三个项目,其中一个是单点登录的登录系统(只验证用户名和密码),另外俩个是一般的系统A系统和B系统(RBAC)。我想实现的是:
我的A系统(或者B系统)登录时调用登录系统,验证是否可登陆,通过后跳回A系统(或者B系统),获取登录用户的权限。当A系统登录成功后就能直接访问B系统(单点登录)。现在我已经实现了单点登录。但是在登录之后不能获取到权限,这个怎么解决啊?大侠给点意见。
我对RBAC的理解还只在Spring_Security上。Spring_Security自带一个RBAC,我登录的时候如果调用了这个自带的就能获取权限。但现在登录系统分离之后,这个Spring_Security的获取权限的功能怎么实现呢?

解决方案 »

  1.   

    或者谁解释一下Spring_Security实现RBAC时那些对应的权限放在了哪里?
    是不是在内存里?那是怎么存到内存里的呢?
      

  2.   

    还是没人来指点一二么?
    我现在用一个比较笨的方法实现了。但也只是先应付一下毕设。用不长久。希望高手指点指点。我的方法是:每次获取url判断是否是系统路径(比如A系统路径:http://127.0.0.1:8080/ASystem/),如果是A系统路径,就在从登录系统验证通过之后再调用自己的Spring_Security获取权限的action。
    这样在每次登录系统时都会去获取登录者的权限。但这其实根本就失去了单点登录的意义,因为在调用Spring_Security获取权限的时候又进行了一次隐藏登录。怎么才能不用再次登录并且能将登陆者的权限获取到呢?
      

  3.   

    楼主是用Spring Security来管理用户的认证和授权吧。
    Spring Security的RBAC我没有用过,不过对Spring Security的CAS还算熟悉(目前项目正在是用),它的工作方式大致是这样的:
    当进入应用系统时(如这里的A系统和B系统),如果此时用户还没有登录,就会跳转到CAS认证页面(相当于楼主的登录系统)进行登录认证,CAS只负责判断用户名和密码是否正确,如果登录成功,就会回到应用系统中进行授权(分配权限)处理;失败当然就不用说了
    在配置Spring Security-CAS的同时配置相应的授权处理bean(具体授权行为肯定是跟你的应用有关,要自己完成代码的编写)~ ~
      

  4.   

    最近一直忙写毕业论文,系统算是成功了吧,就是性能不咋地。
    废话不说。
    我的单点登录时这样实现的,我有个单独的登录系统,每次用户请求一个页面的时候,不管是否已经登录,都要跳转到这个登录系统的验证方法里进行验证(Filter拦截跳转)。验证通过再跳回该用户请求页面。验证没通过则跳到登录系统的登录页面,用户登录成功后形成一个cookie存储用户名信息,并设置成该用户名已登录,若cookie未被销毁,下次验证时返回通过。基本就这样,讲的不太清楚