我是一个在校学生,我想请个各位大侠,在我的项目里面,每次操作都要判断该用户是否有这项权限,我想到了两个方法
1、登录的时候把用户的权限全部放在session里面,后面的每次判断直接对session操作
2、每次操作都查询数据库,判断该用户是否有这样的操作权限。
问题是:是用session好呢?还是查询好;各自的优缺点是什么?该怎么取舍?
1、登录的时候把用户的权限全部放在session里面,后面的每次判断直接对session操作
2、每次操作都查询数据库,判断该用户是否有这样的操作权限。
问题是:是用session好呢?还是查询好;各自的优缺点是什么?该怎么取舍?
解决方案 »
- 两个关于XML的选择题,求解答
- sturts2 sping2.5 配好之后 启动动异常 No thread-bound request found
- ★★★★关于webservice的事务控制问题?★★★★
- Ireport关于 jasperReport. *.java文件是什么时候生成的有什么用?
- java 隐藏下载地址
- 为什么不能用hibernate查询数据库
- JSP运行错误请高手指教。
- Weblogic8.1的密码
- 请教J2EE Tutorial中关于Duke实例的部署问题!!!!
- 大家来谈谈有那些java流行的模式来架构开发项目。参者有分
- 准备设计一个系统, 服务器java, 前端需要支持多种客户端技术, 请教思路
- 在不知道字段类型的情况下,如何利用JDBC查询表?并把结果封装成List
再一个你说的应该是细粒度的权限控制,一般都是在session存放一个集合,即你所说第一种方案,比较合理,如果为 null,则让他登陆,如果不为null则让其执行
通常使用session因为如果权限分的很细,每一个操作(增,删,改,查)都需要权限判断的话,如果用查询不停的与数据库交互性能损耗太大。但是使用session存在一个问题,你是在用户登陆的时候查出他所拥有的权限放入session,如果用户登陆以后,管理员对他的权限进行了修改,那么会造成一个问题,用户session中所存储的权限与后来管理员修改的权限不同步。我原来用session做的权限一直没找到解决同步问题的好方法。望有高人指点一下
能和数据库少交互 就少交互
session是会占用服务器内存。但是和频繁的与数据库交互相比要好的多。
但是此方法一看就存在问题。
一个系统会有多用户登录。权限也不同。
如果管理员修改了用户A的权限。
变量改为false;
A暂时没有任何操作.而用户B进行了操作。由于变量为false。重新查询用户B的权限,把查询出B的权限重新放入session,由于B得权限没变空耗资源是先忽略不计,但是重置B的session后变量又改为了true.A再操作的话还是原始权限。。
那么session在安全性上来说就不怎么样了吧
这个两个都 有弊端的
session 中 耗资源 还不能实时更新里面的数据这样多 浏览器的压力太大 要是一直从数据库里面查询的话 频繁连接数据 给系统造成的压力也是很大的。建议 你还是 配置一个拦截器专门拦截 jsp 或者 html 页面
然后把数据放在request 里面 发送到页面
这样 既省事 也 省资源request 发送到页面 也就销毁掉了 这样 也不存在这个隐患了
OMG,那我想成为超级管理员都可以了。个人觉得,放session和做缓存、序列化等都各有优缺点。
没有一成不变的答案。如果放在session中,则要考虑用户数量所带来的内存开销,然后跟其他方式进行比较,看看哪种合适吧。
和对数据库频繁操作相比session好多了,但是我希望你尽可能使用request来替换session的操作。
你是不是还要点击一下 在一次想去后台查看能不能操作 这个 你用平时的 方法 就可以了 能操作 就 执行要操作的方法 不能操作 就直接拒绝
这个最好 用ajax 实现
一点经验,不知道有没有说清楚。
而用session的话,是对一次查询出的数据与客户端预读且已加载完的定值进行比较。相对不是很损耗服务器资源。
敢问request里面的数据从何而来?
不是什么高手,谈一下我的想法:
在管理员更改权限时,可以将session会话中保存的权限一块修改。
我吐血。。每个人的session是独立的啊。。
管理员怎么修改,操作员的session..