Busing 2010-07-15 17:15
浏览 542
已采纳

系统中权限不同登录的菜单不同是怎么实现的?

系统中都有权限之分,各个权限登录进去操作的菜单式不一样的,这个是怎么实现的啊,难道真的是把用户的菜单都记录在数据库里面吗?
还是一个权限对应一个菜单,给菜单编号,登录的时候处理?
求解

  • 写回答

4条回答 默认 最新

  • Rambing 2010-07-16 09:32
    关注

    我们的做法是使用JSP的自定义Tag实现的。其实每一个Menu都是一个Link, 那么这就和URL的访问控制是一致的,所以使用Tag只是起到了一个隐藏的作用,具体的控制还是使用URL的访问控制完成。

    URL访问控制做法(通过拦截用户的访问,如果用户访问了没有授权的URL将被重定向到Access Deny画面, 这样是更安全的做法)
    在Struts2下有如下的形式的URL
    http:localhost:8080/context/function1-{id}.action
    http:localhost:8080/context/function2!search.action

    可以通过解析URL获取到Function
    在本例中就是 function1.action 和 function2.action

    1. 在数据库中定义一个表Function 记录系统中的所有的Function 然后就是User和Function的映射了, 每一个User 具有哪些访问权限,将这些Function赋予就可以了。

    2.但是Function往往比较多,这样直接定义比较复杂。所以通常会引入Role的概念。
    在系统中追加Role表。并且定义ROLE_FUNCTION。
    有了Role之后只要定义UserAccount_Role来管理USER 和Role就简单多了。

    以上的一套东西,Acegi框架有了较好的实现。 楼主可以参考,自己实现也不难做。
    希望以上对楼主有帮助。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 用三极管设计一个单管共射放大电路
  • ¥20 fluent无法启动
  • ¥15 孟德尔随机化r语言运行问题
  • ¥15 pyinstaller编译的时候出现No module named 'imp'
  • ¥15 nirs_kit中打码怎么看(打码文件是csv格式)
  • ¥15 怎么把多于硬盘空间放到根目录下
  • ¥15 Matlab问题解答有两个问题
  • ¥15 LCD12864中文显示
  • ¥15 在使用CH341SER.EXE时不小心把所有驱动文件删除了怎么解决
  • ¥15 gsoap生成onvif框架