论坛首页 入门技术论坛

如何进行用户权限的菜单设计

浏览 19656 次
该帖已经被评为新手帖
作者 正文
   发表时间:2007-02-01  
写了这样一个权限管理:
1.用户登陆,根据用户提交信息从数据库中提取用户类型(admin,manager,operator),然后放到session里(在userController里写实现的方法);
2.用IF ESLE实现在菜单页根据获取的不同的用户类型显示不同的页面链接菜单(1."房间预定管理";2."顾客信息管理";3."房间信息管理";4."系统用户信息管理"),可以点击进入操作页面,进行相关的增加删除修改等操作.
比如:(1)admin,则显示1,2,3,4四个链接菜单;
     (2)manager,则显示1,2,3三个链接菜单;
     (3)operator,则仅显示1,2两个链接菜单;
这样似乎实现了所谓的权限管理,其实不然,因为即使你的身份不是管理员,而且没有链接菜单允许你访问系统用户页面,你也完全可以手动通过在地址栏里输入URL访问,这样也就谈不上什么权限管理了.

不知道大家有什么好的方法可以做到,既可以根据不同用户类型显示不同的链接菜单,又可以拦截非法的越权URL的访问?:)
   发表时间:2007-02-01  
tear 写道
写了这样一个权限管理:
1.用户登陆,根据用户提交信息从数据库中提取用户类型(admin,manager,operator),然后放到session里(在userController里写实现的方法);
2.用IF ESLE实现在菜单页根据获取的不同的用户类型显示不同的页面链接菜单(1."房间预定管理";2."顾客信息管理";3."房间信息管理";4."系统用户信息管理"),可以点击进入操作页面,进行相关的增加删除修改等操作.
比如:(1)admin,则显示1,2,3,4四个链接菜单;
     (2)manager,则显示1,2,3三个链接菜单;
     (3)operator,则仅显示1,2两个链接菜单;
这样似乎实现了所谓的权限管理,其实不然,因为即使你的身份不是管理员,而且没有链接菜单允许你访问系统用户页面,你也完全可以手动通过在地址栏里输入URL访问,这样也就谈不上什么权限管理了.

不知道大家有什么好的方法可以做到,既可以根据不同用户类型显示不同的链接菜单,又可以拦截非法的越权URL的访问?:)


项目中用了ldap如果手写url那么就是直接清了session跳到首页去。
0 请登录后投票
   发表时间:2007-02-01  
做角色和action的映射配置表,然后用filter来过滤就行了。
0 请登录后投票
   发表时间:2007-02-01  
tear 写道
写了这样一个权限管理:
1.用户登陆,根据用户提交信息从数据库中提取用户类型(admin,manager,operator),然后放到session里(在userController里写实现的方法);
2.用IF ESLE实现在菜单页根据获取的不同的用户类型显示不同的页面链接菜单(1."房间预定管理";2."顾客信息管理";3."房间信息管理";4."系统用户信息管理"),可以点击进入操作页面,进行相关的增加删除修改等操作.
比如:(1)admin,则显示1,2,3,4四个链接菜单;
     (2)manager,则显示1,2,3三个链接菜单;
     (3)operator,则仅显示1,2两个链接菜单;
这样似乎实现了所谓的权限管理,其实不然,因为即使你的身份不是管理员,而且没有链接菜单允许你访问系统用户页面,你也完全可以手动通过在地址栏里输入URL访问,这样也就谈不上什么权限管理了.

不知道大家有什么好的方法可以做到,既可以根据不同用户类型显示不同的链接菜单,又可以拦截非法的越权URL的访问?:)


用filter,或者在你的核心控制器里面加权限。如果你的页面操作设计了独立的操作代码的话,权限就容易根据这些操作代码和用户权限表比照,进行控制。偶这里说的页面本质上应该是业务操作。不同系统可能不同。
0 请登录后投票
   发表时间:2007-02-01  
扩展下struts-menu可以做到
0 请登录后投票
   发表时间:2007-02-01  
呵呵,我刚学会了一种办法 :我用的是SPRING
先写一个权限拦截public class AuthorityInterceptor implements MethodInterceptor{},然后在SPRING容器中如下配置:

<bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
    <property name="beanNames">
            <list>
                <value>/自己的ACTION</value>
                <value>/自己的ACTION</value>
                ..               
            </list>
    </property>
        <property name="interceptorNames">
            <list>
                <value>authorityInterceptor</value>
            </list>
        </property>
    </bean>

<bean id="authorityInterceptor" class="org.yourself.struts.authority.AuthorityInterceptor"/>
0 请登录后投票
   发表时间:2007-02-01  
你具体的权限控制全部写在权限拦截器public class AuthorityInterceptor implements MethodInterceptor{}里面,就OK了!
0 请登录后投票
   发表时间:2007-02-01  
也许有人想把菜单显示和URL拦截合并在一起做,但是我认为这是不好的做法.实际上,如果系统设计比较完善的话,基本上能够复用大部逻辑.我的做法是分别实现:根据权限选择菜单,不拦截URL,只在Service层用拦截器做权限控制.
0 请登录后投票
   发表时间:2007-02-01  
MM可以阅读一下《基于角色的权限控制》那篇文章,县有一个ROLE表,表示系统中的角色;还应该有一个Resource表,里面有各种各样的资源,对于MM来说是URL;然后由一个PERMISSION表,里面对应每个每个角色可以访问的资源;然后菜单就可以通过查询取出来……
0 请登录后投票
   发表时间:2007-02-01  
昨天我刚做了防止URL注入操作。在生成权限树菜单的时候,把权限缓存到ssession中。在增加一个filter或者interceptor,用户访问的时候将URI与session中的权限对比。这样也是可以做到的。
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics