各位下午好,小弟正在做一个权限管理的系统.设计方面的工作己通过参考网上的资料基本完成,设计了五张表(用户表、权限表、用户组表、用户与组的映射表、权限与组的映射表)
权限表 action:
actionid    actionname  actionstr(权限英文描述名)
1 添加用户  adduser 用户组表 group:
groupid     groupname 用户表 member:
id  name    pwd   last_ip     last_time   load_count 用户与组的映射表 membergroup:
id   memberid name  groupid 权限与组的映射表 actiongroup:
id actionstr  groupid     
但在技术实现方面不知从何下手.我打算用jsp+sevlet做,当用户登录时判断其为哪个用户组成员,并得到该用户组所拥有的权限,以级联菜单(或其他显示形式,超链接形式)显示该用户所拥有的权限,但这样做的只是对url的隐藏与显示,要是用户直接输入某管理员操作页面的url,也是可以进行相关管理操作的,这样系统就会出问题了.不知各位有没有什么好的实现方式可以提点一下,或是自己的实现方式,谢了

解决方案 »

  1.   

    去看看RBAC模型目前有acegi这个东西特别火,但是需要自己扩展。
    它使用taglib判断当前用户是否有操作的权限,如果没有就隐藏保护的内容。
      

  2.   

    页面上保存个seesion 他点页面进去的时候判断一下他是直接点进来的还是
    从登陆界面过来的  不是的话跳到登陆界面
      

  3.   

    用SESSION就可以啊 在每个页面写一个判断SESSION的语句 用户登陆成功的同时就给这个用户创建 一个SESSION 里面存储用户的相关信息和权限。最好做个过滤器 过滤所有页面(不包括登陆页),如果SESSION中存储的用户已登陆 并有权限就继续 否则给跳到登陆页或提示页 告诉他权限不够 就可以了 思路给你了 代码就不是问题了吧
      

  4.   

    session设置值,先验证,登录成功session设置,不成功返回,如果直接输入url,sesion没有相应的值就跳回登录页面..
      

  5.   

    技术实现:
    1.表单式认证,这是常用的,但用户到达一个不被授权访问的资源时,Web容器就发
    出一个html页面,要求输入用户名和密码。 
    2.一个基于Servlet Sign in/Sign out来集中处理所有的Request,缺点是必须由应用程序自己来处理。
    3.用Filter防止用户访问一些未被授权的资源,Filter会截取所有Request/Response,
    然后放置一个验证通过的标识在用户的Session中,然后Filter每次依靠这个标识来决定是否放行Response。
    这个模式分为:
    Gatekeeper :采取Filter或统一Servlet的方式。
    Authenticator: 在Web中使用JAAS自己来实现。
    用户资格存储LDAP或数据库:
    1. Gatekeeper拦截检查每个到达受保护的资源。首先检查这个用户是否有已经创建
    好的Login Session,如果没有,Gatekeeper 检查是否有一个全局的和Authenticator相关的session?
    2. 如果没有全局的session,这个用户被导向到Authenticator的Sign-on 页面,
    要求提供用户名和密码。
    3. Authenticator接受用户名和密码,通过用户的资格系统验证用户。
    4. 如果验证成功,Authenticator将创建一个全局Login session,并且导向Gatekeeper
    来为这个用户在他的web应用中创建一个Login Session。
    5. Authenticator和Gatekeepers联合分享Cookie,或者使用Tokens在Query字符里。
      

  6.   

    http://www.javaeye.com/topic/10400?page=2