免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6178 | 回复: 4
打印 上一主题 下一主题

问个菜鸟问题,B/S中的权限如何控制? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-03-26 18:42 |只看该作者 |倒序浏览
本人自学java+tomcat+struts编程,看了不少书,一直有一个权限控制的疑问,用空洞的语言比较难描述清楚,举个例子说明吧。

最近我写了一下用于上传下载的小网站,一共就两个action:loginaction和uploadaction。

网站首页是一个登录页面,有两种用户:普通用户和固定名字为“admin”的管理员。

普通用户登录后转到showfiles.jsp显示所有可供下载的文件。如果是admin登录,则除显示下载文件列表外,还提供一个form供上传文件用。

所有的B/S编程方面的书都是把登录用户名放到session里,我也这样做。现在我的问题是这样的:是不是每个jsp文件和每个action中都要判断一次用户名呢?这样是不是很麻烦?

在我的小网站中,如果在uploadaction中不判断用户名,那么任何人都可以按照admin.jsp中的form控件相同的名字构造一个html文件然后上传文件。

论坛徽章:
0
2 [报告]
发表于 2008-03-28 08:54 |只看该作者
权限系统确实比较麻烦。
我做的都是小项目,不过涉及到东西也不少。

我是这样做的。每个$action对应一个数字,将模块内的actions组成一个一个的模块,每个模块也对应一个数字。

对于每个组或者每个用户,可以将其action或者模块权限的数字 对应的二进制 的相应的位置设置成1,无权限的位置就是0.

例如这样
$action=array('action1'=>1,'action2'=>2,'action3'=>3,'action3'=>3);
如果用户有action1权限,其他的权限没有。则权限码为:0001.
用户只有action1和action3,则权限码为0101.

将权限码存入数据库。涉及到权限时候分析session的权限码就可以了。
我只将用户权限这样做。没做过相应的组的和模块的复杂设计。小型系统可以这样参考吧。
其他权限设计可以参考网上的角色控制、ACL等。

论坛徽章:
0
3 [报告]
发表于 2008-03-29 13:40 |只看该作者
看看web.xml中关于login的部份,配置安全性后在代码中使用isUserInRole判断用户角色就行了

论坛徽章:
0
4 [报告]
发表于 2008-03-31 16:21 |只看该作者
我觉得用filter写比较好

论坛徽章:
0
5 [报告]
发表于 2008-04-11 21:43 |只看该作者
近来在网上大肆搜索关键权限控制的帖子,终于弄明白了filter的用法。谢谢楼上各位。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP