如何使用临时表限制同一个用户名多次登陆

smallbalck 2008-11-20 06:02:37

看到某编文章说利用临时表可以实现用户重新登陆的限制(建立临时表,表中至少有一个内容,就是用户的帐号(或者该帐号对应的ID)。当有其他用户登陆到系统的时候,系统会先从这张临时表中查询,是否有相同的用户记录。若有的话,就会拒绝用户的登陆,警告用户已经有相同的用户登陆了。当用户正常退出系统或者因为以外情况退出系统结束当前会话的时候,那么数据库系统就会清除这张表的内容。如此,当用户下次登陆系统的话,即使是在意外情况下登陆系统的,也可以正常的登陆。)

但我测试了一下如果建立会话级临时表来存放用户的登陆信息,当该用户已经登陆后,还是可以无限制的登陆。原因是会话级临时表只能查看自己的SESSION的数据,所以再次登陆时它在临时表中检索用户帐号时不存在该帐号。

有没有人知道临时表是如何实现用户重新登陆的限制?

文章连接:http://www.51testing.com/?action_viewnews_itemid_85826.html

...全文
149 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
萧湘易水寒 2012-02-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 hdhai9451 的回复:]

从来没听说过可用临时表来限制用户登录
[/Quote]
以前在华为那做海外BOSS的时候全是用临时表解决的,
可是NND的那个退出机制当时没注意,现在肠子诲青了
flg_inwind 2008-11-24
  • 打赏
  • 举报
回复
数据库的用户还是修改profile的比较好
smallbalck 2008-11-24
  • 打赏
  • 举报
回复
前台应用层判断也不好判断,看来该文章是在胡说了,以为有什么新的技术可以简单的实现限制同一个用户名同一时间的登陆呢。注:是应用系统中的用户而不是ORACLE用户
vc555 2008-11-22
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 jdsnhan 的回复:]
晕。那篇文章中的用户并不是oracle的user,而是应用系统中的用户
[/Quote]
系统用户判断问题为什么要放到数据库中去判断,而不在前台应用层判断。不是好设计思路。
sinusoid 2008-11-21
  • 打赏
  • 举报
回复
查v$session
jdsnhan 2008-11-21
  • 打赏
  • 举报
回复
晕。那篇文章中的用户并不是oracle的user,而是应用系统中的用户
DragonBill 2008-11-21
  • 打赏
  • 举报
回复
我记得Tom的那本书是推荐的是设置profile的方法, Temporary table? 没听说过
wffffc 2008-11-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 vc555 的回复:]
看了下,那文章在胡说。
在用户异常退出时,通过用表来记录用户登录情况都不好处理。

可以考虑通过设置用户属性文件来解决。profile下属性Session_per_user来限制同一个用户同时登录会话数。
[/Quote]
同意,或者建触发器直接查v$session就可以,根本用不着再建表!
Andy__Huang 2008-11-20
  • 打赏
  • 举报
回复
从来没听说过可用临时表来限制用户登录
vc555 2008-11-20
  • 打赏
  • 举报
回复
看了下,那文章在胡说。
在用户异常退出时,通过用表来记录用户登录情况都不好处理。

可以考虑通过设置用户属性文件来解决。profile下属性Session_per_user来限制同一个用户同时登录会话数。

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧