锁定老帖子 主题:如何进行用户权限的菜单设计
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间: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的访问?:) 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间: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跳到首页去。 |
|
返回顶楼 | |
发表时间:2007-02-01
做角色和action的映射配置表,然后用filter来过滤就行了。
|
|
返回顶楼 | |
发表时间: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,或者在你的核心控制器里面加权限。如果你的页面操作设计了独立的操作代码的话,权限就容易根据这些操作代码和用户权限表比照,进行控制。偶这里说的页面本质上应该是业务操作。不同系统可能不同。 |
|
返回顶楼 | |
发表时间:2007-02-01
扩展下struts-menu可以做到
|
|
返回顶楼 | |
发表时间: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"/> |
|
返回顶楼 | |
发表时间:2007-02-01
你具体的权限控制全部写在权限拦截器public class AuthorityInterceptor implements MethodInterceptor{}里面,就OK了!
|
|
返回顶楼 | |
发表时间:2007-02-01
也许有人想把菜单显示和URL拦截合并在一起做,但是我认为这是不好的做法.实际上,如果系统设计比较完善的话,基本上能够复用大部逻辑.我的做法是分别实现:根据权限选择菜单,不拦截URL,只在Service层用拦截器做权限控制.
|
|
返回顶楼 | |
发表时间:2007-02-01
MM可以阅读一下《基于角色的权限控制》那篇文章,县有一个ROLE表,表示系统中的角色;还应该有一个Resource表,里面有各种各样的资源,对于MM来说是URL;然后由一个PERMISSION表,里面对应每个每个角色可以访问的资源;然后菜单就可以通过查询取出来……
|
|
返回顶楼 | |
发表时间:2007-02-01
昨天我刚做了防止URL注入操作。在生成权限树菜单的时候,把权限缓存到ssession中。在增加一个filter或者interceptor,用户访问的时候将URI与session中的权限对比。这样也是可以做到的。
|
|
返回顶楼 | |