JSP用户权限和界面显示

我设计有三个表:User、Role、Action和两张中间表User_Role 、Role_Action。User表存放用户信息;Role表存放不同类型用户,比如:超级管理员,一般用户等;Action表存放操作,不如:增加一般用户,删除一般用户等。User_Role 三个字段:id,user_id,Role_id;Role_Action也是三个字段:id,role_id,action_id。

现在问题是:我想要根据不同用户类型显示不同页面,最重要的地方是,根据不同类型用户页面显示不同元素,比如按钮的显示与隐藏,菜单项的显示与隐藏。

在网上查询之后,有些网友说用过滤器,我对这个一点也不熟悉;也有些说用HTML的display:none,我觉得这个不安全。有没有比较完美的方式,各位大侠给指点指点,有源码、实例什么的最好啦!

其实你的权限是有问题的,不应该显示或者是隐藏,而是根据每个人得角色去数据库查询这个人到底有多少操作,不应该把所有的都查询出来进行隐藏。
一般是在用户登录的时候把这些操作放到session里,在前台展示这个用户的所有操作,但是为了安全考虑,比如,某个人可能没有某个操作权限,而恰好另外一个人有这个操作权限,这个时候若是他看到那个人得地址直接在浏览器里输入或者是其他方式进行访问服务器,若是没有进行限制的话,那他就可以成功操作了。
那我们有什么办法可以阻止呢?最简单就是过滤器filter,这就是为什么你看到别人会提使用过滤器,因为它可以对每次提交的操作进行拦截,若是在过滤器里判断有权限则放行,若是不符合,则会跳转到某个页面告诉用户你没有这个操作权限

直接后台判断用户权限,然后对输出的页面做修改不可以吗?!

按钮的显示与隐藏,菜单项的显示与隐藏。
开发一个自定义标签,传入用户roleid,在自定义标签中控制按钮和菜单项的隐藏。

建立一个right表,表中只有insert,delete,update,query四个字段,在user,role,menu,right四个关联关系中,建立用户-角色-菜单-权限的关系,用户登录后获取有query权限的菜单进行展示。用户点击某个菜单后,判断是否有此菜单的四个权限,从而在界面上显示按钮或者连接操作。

你的权限要求太细,已经精确到页面对应的菜单项的,这样的话,以你目前的表数量来看,是不大可能的。

采用自定义标签方式(可以细粒度某个按钮的呈现与隐藏)或者采用ajax请求方式获取菜单(无法细粒度到某个按钮的呈现与隐藏)这两个方式都可以实现对菜单的隐藏以及权限控制. 我个人常采用方式是自定义标签方式. 比较方便

看什么情况吧,如果简单点的 就干脆多做几个页面。每个页面显示不同角色呈现的元素。
如果复杂点的则可以新建一张 角色与资源(元素或者路径)的关联表,通过jsp中的自定义标签调用是否具备这个权限。这个自定义标签的作用就是验证角色是否有这个 资源的权限。为确保安全,拦截器也可以做权限验证,保证了客户端与服务器都有验证。


里面显示元素

其实有个问题:你说的元素最后都可以用 请求路径 来解释。手打的,写的很乱。