掌中招聘网 » 掌中论坛 » 全部 » jsp如何判断多用户的权限
首页 上一页 下一页 尾页 
 本页主题: jsp如何判断多用户的权限
 


kane8000

积分:60
发表主题:56




 发表于 2009-06-23 17:42 资料
楼主

    我现在数据库里有七个不同的用户且用户的权限各不相同!并且七个用户各对应有一个权限字段名,数据库字段如下:
    列名 数据类型         可否为空         说明
userName         Varchar(10) Not  null 用户姓名
userPassword Varchar(20) not null           用户密码
userLogin           char(2)         null           使用注册管理权限
userCharge char(2)         null         使用收费管理权限
userDoor           char(2)           null           使用转户管理权限
userRepast char(2)           null           使用餐卡管理权限
userFlatThings char(2)           null           使用公寓用品管理权限
userArmyThings char(2)           null           使用军训用品管理权限
userSystem char(2)           null               使用系统管理权限

    我现在想登陆的时候根据不同用户跳转到相应的管理页面里!用MVC架构!jsp+servlet+Javabean
  希望那为高手能帮帮忙!!有源代码者优先!
                                                                      谢谢!!
回复1: Filter
加个过滤器就ok了
回复2: if else呗

要么你把页面存数据库里,每次去数据库里拿

再要么,都跳一个页面,根据权限的不同生成不同的菜单
回复3: 来学习
回复4: 建议使用filter进行过滤
回复5: 在数据库表里面设置好权限对应的不同能,然后查找出来
回复6: 使用filter过滤吧!
回复7: 用户登陆成后,用session保存用户信息,获取用户的权限,用户表里应该有个外键权限的id,
通过权限ID从数据库中查到用户所对应的权限对象,在做数据库设计时权限表里可以加个字段(url),也就是所拥有的路径
如url可以设成:sysUser.jsp(表示是系统用户)....其他用户的url也各不相同
转向的话就直接request.getRequestDispatch(url).foward(request,response);
回复8: bu  cuo a 
回复9: 谢谢的各位关注!!在加油!!哦!!
回复10: 楼主初学吧

回复11: 学那一点!!这个Filter 没用过!!
回复12: 做之前先要把思路理清

把登录页面上输入的数据先提交到一个Servlet中然后在Servlet中获取用户输入的登录名和密码
之后再把用户输入的登录名和密码送到数据库中验证若不存在就返回到登录页面 (request.getRequestDispatcher("/login.jsp").forward(request,response))
若存在就根据用户输入的登录名和密码查出此用户所拥有的权限,然后在根据不同的权限跳转的不同的页面  (response.sendRedirect("XXX.jsp"))
回复13: 刚刚接触一点点java javascript
我也是菜鸟一个.....
跑来学习的~!
回复14: 路过学习一下
回复15: 路过
回复16: 路过学习一下
回复17: mark
回复18: 原来如此
回复19: 是师的
回复20: 我一直是用if..else判断!
回复21: 学习一下
回复22: 用过滤器可以解决这样的问题,而且过滤器也就用来控制权限的
回复23: DING
回复24: 这个数据表设计有问题哦

如果以后要增加一个权限呢?
回复25: 来学习下。
回复26: 学习下,哈哈。
回复27: 我现在数据库里有七个不同的用户且用户的权限各不相同!并且七个用户各对应有一个权限字段名,数据库字段如下:
    列名 数据类型        可否为空        说明
userName        Varchar(10) Not  null 用户姓名
userPassword Varchar(20) not null          用户密码
userLogin          char(2)        null          使用注册管理权限
userCharge char(2)        null        使用收费管理权限
userDoor          char(2)          null          使用转户管理权限
userRepast char(2)          null          使用餐卡管理权限
userFlatThings char(2)          null          使用公寓用品管理权限
userArmyThings char(2)          null          使用军训用品管理权限
userSystem char(2)          null              使用系统管理权限

回复28: session
回复29: 来学习
回复30: 好像用cookie也可以吧
回复31: 顶个
回复32: 挺好
回复33: 真的不错
回复34: 首先,每个模块能,都给一个ID,
每个用户都有没有模块ID的值,假如 1 代表有权限, 0 代表没有权限,

对于登陆的用户,要取出所有的模块ID的值,在加载页面时,对每个模块进行判断!
回复35: ====
回复36: 路过学习一下,收获很大
回复37: 领略一下这种感受
回复38: 把数据库里把几个权限的类型用布尔型设置,根据条件查询产生菜单
回复39: 来向各位大虾学习
回复40: 首先改表!!!!!!!!!!
那你系统管理员的信息又怎么定义??


回复41: 首先改表!!!!!!!!!!
那你系统管理员的信息又怎么定义??


回复42: 首先改表!!!!!!!!!!
那你系统管理员的信息又怎么定义??


回复43: 学习了,
回复44: 按照楼主的题目:jsp如何判断多用户的权限
楼上几位有说明filter的方法就已经可以完成楼主的需求了
但楼主无法满意的原因是:只是用filter判断单用户权限还可以,多用户好像不容易实现
其实不是不能实现,而是逻辑太复杂,所以多用户权限判断需要将复杂的逻辑放在javabean中最好。
具体做法是:
在web.xml中设置: <上下文初始化参数>即 <context-param>
我加 <xx>的都可以在google中看,如果不太了解此技术的话
在此参数中主要是设置名和值,名为:管理权限名,值为此管理权限可以访问的URL,并将其存入"权限javabean"中
用户登录成放入session且在filter去判断此用户对应的"权限javabean"中是否有权限访问此url。

另外,这其实是一个用户权限的设计问题,如果重新做设计的话,可以考虑以下做发。以下做法更加灵活,可以做到让管理员在页面中随意配置用户权限。在此发表一下本人拙见:
建立一张能表
create table t_fun(
  id int identity(1,1) primary key,
  name varchar(20),
  url varchar(200)
);
此表中保存所有能对应URL,name列中存放此能的中文描述
再建立一张表,存储用户和能的对应关系,即多对多的关系表,此表需要包含用户表和能表的主键
create table t_user_fun(
  userName Varchar(10),
  funid int
);
表建完后,还需要做一个java对象
public class User{

}
此对象封装了用户信息(用户表的各列的映射)以及他能访问的URL列表(由于是列表,所以是一个List对象)(数据来源从对应t_user_fun表中查到此用户的所有funid,再到t_fun查到所有的url,注意:可以用inner join进行连接查询)
此对象在用户登录时,用户名密码正确时创建

有了此对象
回复45: 可以根据不同的权限进入不同的管理界面,权限可以再数据库里设!
回复46: 学习之……
回复47: 学习了
回复48: 很不错,学习了

回复49: 路过
回复50: LZ在做权限的时候,合理的做法应该是做成3张表就基本上就可以了,要做的更好的话,就做成5张表,
3张表的做法
1.用户表
2.角色表  //中间表
3.资源表
登录的时候,就可以根据用户具有什么样的角色来判断具有什么样的权限了。


LZ那样设计的话,可以采用过滤器的做法,对用户进行一个个的判断,但在维护方面不是很适合,
对以后的能扩展,都不是很方便。。



回复51: 呵呵~加油啊~~
回复52: 呵呵~加油啊~~呵呵~加油啊~~
回复53: 学习了。
回复54: 从数据库中,读出权限然后分析,判断用 <jsp:forward>跳转
回复55: Filter
回复56: 过滤器是最好用的
回复57: 学习中
回复58: up
回复59: 学习中
回复60: 该回复于2009-06-23 09:33:02被管理员删除
回复61: 该回复于2009-06-23 09:33:01被管理员删除
回复62: 围观
回复63: 支持一个啊
回复64: 看看。学习一下
回复65: LZ在做权限的时候,合理的做法应该是做成3张表就基本上就可以了
1.用户表
2.角色表  //中间表
3.资源表
登录的时候,就可以根据用户具有什么样的角色来判断具有什么样的权限了。

回复66: 最简单的办法是在每个JSP页面上加个包含文件,包含文件来判断权限,如果这样的你都会了,你就应该生化一下用简单的filter了,如果这个也很熟练了,你就可以研究研究acegi(spring security)了
回复67: 不错!!学习一下
回复68: 在数据库表里面设置好权限对应的不同能,然后查找出来
回复69: 支持filter
回复70: 权限分配的问题最好放在数据库中,建议在弄两张表,一是权限表,二是权限分配表。
回复71: 顶!
回复72: 学到了
回复73: 飞过
回复74: asdfasdfasdfasdfasdf
回复75: fffffffffffffffffffffffffffff
回复76: filter
回复77: dddddddddddddddddddddddddddddddddddd
回复78: 学习,大家多多指教,高手如云啊
回复79: 在filter中根据登陆的用户名和密码判断是否登录成,登陆成,将根据用户名获取用户权限。
回复80: userLogin          char(2)        null          使用注册管理权限
有一个值 当跳转时利用数据库读取它
回复81: 简单的:用if
一般的:写个filter
回复82: 用if就可以了完全能做到
回复83: asdfasdfasdf
回复84: 把权限存到数据库中,角色和权限的关系为多对多,到时根据角色取权限也就是菜单列表咯
回复85: 在servlet中定义一些角色和权限,在jsp中加上变量nowUser来判断身份和相应的权限,但是这样只能判断较少的角色
回复86: 用过滤器哈!
要注意重定向的路径哟!
回复87: 学习了
回复88: 在数据库表里面设置好权限对应的不同能,然后查找出来
回复89: 学习
回复90: 学习,借鉴!
回复91:   路过,学习学习....
回复92: 路过进来学习一下
回复93: 学习,好好学习,天天向上
回复94: 首先,每个模块能,都给一个ID,
每个用户都有没有模块ID的值,假如 1 代表有权限, 0 代表没有权限,

对于登陆的用户,要取出所有的模块ID的值,在加载页面时,对每个模块进行判断!
回复95: affsaf a
回复96: 我觉得用hibernate还能好一点,把你的登陆数据持久化后,再去做判断还能科学一点,希望楼主加油哦……
回复97: 这个不错,mark
回复98: 1.登陆
2.获取登陆用户的权限
3.根据权限跳到不同的url

方法自己选吧,看习惯用什么
回复99: mark
回复100: 顶一下
回复101: 该回复于2009-06-23 09:33:36被管理员删除
回复102: 顶下,java没有学过
回复103: .......如果权限以后动态了要怎么办呢?

我现在的解决方式是

admin表(管理员表) id(主键) userID userPassword roleListID(与role_list表主键关联)

role表(权限表) id(主键) roleName(权限名称) roleUnit(所属模块) roleUrl(地址)

role_list表(权限集合表) id(主键) roleListName(权限集名称)

role_detail表(权限关联表) id(主键) roleID(与role表主键关联) roleListID(与权限集合表主键关联) roleUnit(所属模块) roleState(该权限状态)

整体就上面这三个表 可以创建不同的权限 管理员只要选好权限集就可以了 当然 这个通过过滤器判断是麻烦了点 我这个主要是用来生成后台管理员操作能的树而已

我这里有具体的例子 我也是头一次做这些东西 如果做错了希望大牛们帮我纠正错误
回复104: 配个过滤器吧
filter
页面用struts吧
回复105: switch??

回复106: 新手,来学习
回复107: 学习
回复108: 把对应跳转页面的地址写在数据库里面 或者写在程序里面 用的时候直接拿就可以了
回复109: 学习~好好学习
回复110: 登陆时,首先到后台,你查询一下DB,判断一下权限,然后根据不同权限去跳转到不同的页面!
就是这个思路
回复111: 楼主在数据库的字段中不是有定义了用户的权限吗?那可以这样作:
  1.在后台写操作数据库的方法的时候,当查询用户名称的时候,连带把用户权限的那个字段查询出来。
  2.在servlet里判断用户名登陆的是否正确的时候,顺便让每个权限都有一个返回值,比如
  if(权限 == “”) {
      return "1";
  }
  然后放入session中
  3.在前台的jsp页面上获取session,然后可以用c:if标签来判断权限,从而来区分不同用户登陆的时候显示不同的页面。


不知道我讲的是不是很清楚,如果不清楚楼主可以留言,我有源代码可以供参考下,不过用的是ssh的框架,但是具体到这部分的内容差不多。
回复112: 学习一下
回复113: 学习一下
回复114: 学习!!!
回复115: if else
回复116: 先把表设计好,这样就容易些..
回复117: 刚刚接触一点点java javascript
我也是菜鸟一个.....
跑来学习的~!
回复118: 使用filter过滤的话逻辑性很强,如果单纯的if else 会增加服务器的负载量
导致系统很慢
不过呢还是建议使用filter
回复119: 学习学习
回复120: mark
回复121: 路过来学习下
回复122: mark
回复123: ............
回复124: 学习了.
回复125: 学习一下.
回复126: 我也是初学者,来学习学习
回复127: 学习!
回复128: 支持  顶个
回复129: 这不是说要用什么东西做的问题,看你是如何设计的
主要在于您对权限的设置
方法有很多种
也有安全问题的考虑
这个要看系统而定
回复130: 可以使用条件转发的……
回复131: 学习了
回复132: 推荐可以去看下spring security看下他的权限设计和实现!

首页 上一页 下一页 尾页 
 各地招聘导航
·北京 ·天津 ·上海
·西安 ·东莞 ·广州
·深圳 ·南京 ·杭州
·济南 ·南昌 ·兰州
·合肥 ·长沙 ·武汉
·成都 ·重庆 ·太原
·福州 ·沈阳 ·南宁
·海口 ·贵阳 ·郑州
·银川 ·西宁 ·昆明
·拉萨 ·长春
·石家庄  ·乌鲁木齐
·哈尔滨  ·呼和浩特
 各地兼职导航
·北京 ·天津 ·上海
·西安 ·东莞 ·广州
·深圳 ·南京 ·杭州
·济南 ·南昌 ·兰州
·合肥 ·长沙 ·武汉
·成都 ·重庆 ·太原
·福州 ·沈阳 ·南宁
·海口 ·贵阳 ·郑州
·银川 ·西宁 ·昆明
·拉萨 ·长春
·石家庄  ·乌鲁木齐
·哈尔滨  ·呼和浩特