关于登陆和留言板这两块设计的讨论

胖虎
博客专家认证
2013-11-28 09:34:36
加精
刚接触web开发...比较想明白这两块的做法...喜欢琢磨,所以想来问下各位关于这两块自己的想法哈

登陆这块:
1.登陆这块我想知道,成功登陆了之后会在Session域里面存放你的用户名和密码么???其他页面用session来判断是否已经登陆了?还是怎么的
2.登陆之后,要保存一段时间的话,是用cookie么??如果我这边登陆了我的账号,其他人电脑要登陆,怎么提示他已经登陆,是用application域来存放已经登陆的用户么?
3.如果这两个问题都是这样,那么如果Session域里自己弄一个用户名和密码进去,是否就可以伪造已经登陆???
如果用application域来存放已经登陆的用户的话,那么用户如果不按“注销”按钮,直接关掉了浏览器的话,这个用户是不是还挂在application域里面??还是说需要有个什么东东来监听他是否已经“失去了连接”

留言板这块:
我初略地想的话,留言板这块是通过数据库的一个表来保存用户门的留言和一些其他信息.
1.如果它一直留言,我肯定不愿意,想让这个IP过1分钟才能继续下一次留言,这个要怎么考虑
2.如果需要增加一个管理员的模块,管理员要对一个用户的留言进行回复的话,那么数据库表的设计,一般是怎样的

由于没有接触过web类的项目,很多都不知道,这两块知识,希望企业里做过的人给下解答!!!
...全文
3180 41 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
41 条回复
切换为时间正序
请发表友善的回复…
发表回复
Giberson1 2014-10-24
  • 打赏
  • 举报
回复
我刚从月球回来,很久没上网了。
o青蛙王子o 2014-01-07
  • 打赏
  • 举报
回复
不错不错啊。我也来学习一下
新吾 2013-12-05
  • 打赏
  • 举报
回复
引用 23 楼 pengqian098 的回复:
.net里面有一种叫做票证。form验证,通过票证。 如果是java的话,那就用session保存登录后的用户的信息, 你要知道session的级别,就是在关掉浏览器,这个session就不存在了。 也可以设置session的过期时间。 2.登陆之后,要保存一段时间的话,是用cookie么??如果我这边登陆了我的账号,其他人电脑要登陆,怎么提示他已经登陆,是用application域来存放已经登陆的用户么? 保持登录状态确实是需要cookies。 关于其他人电脑要登录,怎么提示已经登录, 事实上,很多网站,包括一些业务系统都没有这个限制的。 当然了,也有。目前最好的办法就是发心跳包,如果服务器有接受到当前用户发送的心跳包,那么,当前用户是在线的,别的电脑不能登录; 如果服务器长时间没有收到心跳包,那么就可以判定这个用户已经离线。 留言的话,表设计简单、大致可以这样:

--主题
CREATE TABLE [dbo].[Topic](
	[id] [int] IDENTITY(1,1) NOT NULL,
	[topic] [nvarchar](200) NOT NULL,
	[content] [text] NOT NULL,
 CONSTRAINT [PK_Topic] PRIMARY KEY CLUSTERED 
(
	[id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

--回复
CREATE TABLE [dbo].[Comment](
	[id] [int] IDENTITY(1,1) NOT NULL,
	[type] [int] NULL,
	[parentid] [int] NOT NULL,
	[commentuser] [nvarchar](50) NOT NULL,
	[commenttext] [text] NOT NULL,
	[commentreply] [text] NULL,
	[commentdate] [datetime] NOT NULL,
	[commentip] [nvarchar](20) NOT NULL,
 CONSTRAINT [PK_Comment] PRIMARY KEY CLUSTERED 
(
	[id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
表示也是不会 打算去尝试一下 谢谢了!~!
  • 打赏
  • 举报
回复
看了一下,楼上所说的一般只适合企业应用,互联网应用很少会把登录信息直接放在 session 里面的。
胖虎 2013-12-04
  • 打赏
  • 举报
回复
引用 33 楼 yemubai 的回复:
真的是知识帖啊 学习了
恩,一起学习!!
胖虎 2013-12-04
  • 打赏
  • 举报
回复
引用 31 楼 BlackKOL 的回复:
不好好学,问这么低智商的问题 强烈建议改行吧, 我多希望少个同行啊,更是那种, 什么什么对手,什么什么队友那句一样~
首先,我想问下你,对于我问的问题,你都会了么??还有,我也有句话想跟你讲! 就是那个什么站着说话不腰疼,装逼遭雷劈之类的,也许你很厉害,也许你是大牛,大家在这里讨论,你不屑,那么请你悄悄爬开!!!只会说不会做,这行的悲哀!!
BlackKOL 2013-12-04
  • 打赏
  • 举报
回复
引用 34 楼 u011133213 的回复:
[quote=引用 31 楼 BlackKOL 的回复:] 不好好学,问这么低智商的问题 强烈建议改行吧, 我多希望少个同行啊,更是那种, 什么什么对手,什么什么队友那句一样~
首先,我想问下你,对于我问的问题,你都会了么??还有,我也有句话想跟你讲! 就是那个什么站着说话不腰疼,装逼遭雷劈之类的,也许你很厉害,也许你是大牛,大家在这里讨论,你不屑,那么请你悄悄爬开!!!只会说不会做,这行的悲哀!![/quote] 呵呵呵, 等你做了十年.你就会觉得劳之给你的建议是最对的,还讨论 做这么个东西用屁股想想都知道一个思路,你跟大家在讨论,, 看来真是一个不适合一个人做开发的时代到了
lgqlshj 2013-12-04
  • 打赏
  • 举报
回复
来看看弄弄明白登录和留言板。
olicef 2013-12-03
  • 打赏
  • 举报
回复
原来是这样,XUEXILE
ADC_VN 2013-12-03
  • 打赏
  • 举报
回复
真的是知识帖啊 学习了
ifvlr 2013-12-03
  • 打赏
  • 举报
回复
引用 11 楼 u011133213 的回复:
[quote=引用 1 楼 ifvlr 的回复:] 登陆这块: 1.登陆这块我想知道,成功登陆了之后会在Session域里面存放你的用户名和密码么???其他页面用session来判断是否已经登陆了?还是怎么的 个人觉得 session存放用户名,访问权限等,一般不会存放密码,存了也没啥用。你访问的页面可能需要用户名或者验证访问权限,可以直接从session中取出再比较,但是页面中一般不会再需要验证密码了。 2.登陆之后,要保存一段时间的话,是用cookie么??如果我这边登陆了我的账号,其他人电脑要登陆,怎么提示他已经登陆,是用application域来存放已经登陆的用户么? session是有默认时效的,一般30min,cookie也可以设置的。session在服务器端会自动保留设置时间的。关于如何验证,我也不太清楚,但个人觉得应该不是存在application中,因为application中存的资源有限,是比较宝贵的资源。 3.如果这两个问题都是这样,那么如果Session域里自己弄一个用户名和密码进去,是否就可以伪造已经登陆??? 如果用application域来存放已经登陆的用户的话,那么用户如果不按“注销”按钮,直接关掉了浏览器的话,这个用户是不是还挂在application域里面??还是说需要有个什么东东来监听他是否已经“失去了连接” 关掉浏览器是肯定还在application中的。
谢谢,感觉说得不错!你在第一点里面说的 验证访问权限的话 是怎么回事?可以详细说说么[/quote] 比如一个超级管理员,一个普通用户,比如超级管理员能够访问系统设置这个栏目,而普通用户不能访问这个这个栏目。但是超级管理员在系统设置操作时是访问到了对应的系统设置栏目的url地址的。普通用户是没有权限进行系统设置的,所以他不能访问这个页面,但是如果普通用户知道对应的系统设置的url地址,那么他直接在浏览器中输入这个地址,是不是就可以进去了?但实际上他是没有权限的,所以出现这种情况时需要进行权限拦截。我当时做的时候是把对应用户能访问url存到session中的,但是这未必是一个号方法。
BlackKOL 2013-12-03
  • 打赏
  • 举报
回复
不好好学,问这么低智商的问题 强烈建议改行吧, 我多希望少个同行啊,更是那种, 什么什么对手,什么什么队友那句一样~
Zanvimocvy 2013-12-02
  • 打赏
  • 举报
回复
以前做过web项目,但在学校里的,出来后就做软件开发了,很多东西都忘了。 但看到楼主的问题,感觉你应该先搞清楚概念,session是保存在服务器端,如果你明白了这点,就不会问能不能问伪造? 如何判断登陆页面,向楼上说的,用路径吧,因为即使登陆成功后,后因为某种原因删除了cookie或是重新注册后,其他的页面cookie应该是即使更新的,而不是说还要重新跳转到首页去登陆。 application确实是大材小用了 留言板有点像投票系统,新闻系统,一定时间内,不允许用户不停的投票和顶的,最好的办法好像不是用时间比较来做的,具体的,呵呵有点忘了。
handht 2013-12-02
  • 打赏
  • 举报
回复
路过,支持,顶一下
小刀打铁 2013-12-02
  • 打赏
  • 举报
回复
引用 13 楼 u011133213 的回复:
[quote=引用 6 楼 u012201996 的回复:] 服务器会为每个登录用户保存session,相当于个hashmap,保存在内存中的,这个hashmap的key就是sessionId,当用户登录后,下次的每次请求都会在http头部加上这个sessionid,从而找到这个session。 session中可以保存用户信息,或者自定义,看你的系统需要啥了。如果本地要保存cookie的话让用户下次自动登录,那肯定是要在cookie中保存用户名,用户密码了。 至于实现已经登录,一般都是系统另外单独处理。比如用单例模式保存个用户的hashmap,key保存用户名,value保存用户登录状态,每次登录验证的时候去查找这个hashmap即可。 对于留言板模块,我首先想到是在页面用js控制就可以实现1分钟后再能回复,但是考虑到页面关闭后再打开去回复,那应该只能在服务端处理了。那就在用户每次回复后保存当前系统时间到session中,下次回复时比对,如果小于1分钟,返回,反之,保存内容并更新session。 这样应该差不多了吧。不用客气
这个想法不错...不知道做web的企业项目里是否也是这样干的!! [/quote]至少我在公司就是这么实现的
  • 打赏
  • 举报
回复
就是来看看
GongTongZuoYan 2013-12-01
  • 打赏
  • 举报
回复
呵呵!!,,,,
夏天的狂风 2013-12-01
  • 打赏
  • 举报
回复
http://tieba.baidu.com/p/2736093577
胖虎 2013-11-30
  • 打赏
  • 举报
回复
引用 19 楼 licheng989 的回复:
[quote=引用 15 楼 u011133213 的回复:] [quote=引用 2 楼 Giberson1 的回复:] 我帮你详细解答下,记得多给我点分。 【登录】 1. 你说的方式out了,现在一般权限过滤,都是根据你的路径来判断是否登录, 用过写一个过滤器来,判断该路径是否合法,否则跳转到登录页面; 2. 一般来说,一个帐号可以被多个人同时在多个地方登录。如果你要做到单一登录, 即一个帐号同时,只能被一个用户登录,则需要做额外的判断,比如你可以记录 该帐号当前登录ip,时间,次数等,也或者直接把登录后的帐号存在application对象中, 这样,下次再有人登录,就通过去application对象里面查找来判断是否当前有人登录 3. session是服务器端控制,你单凭一个ie浏览器,是无法伪造登录的,另外application 只要你服务器不停,就一直生效。 【留言板】 1. 你记录留言的时候,把当前时间记录下来,下次再记录第二条留言时候,将当前时间 和上条留言时间比较,一分钟之内,则不让它留言,反之让他留言 2. 管理员和普通用户留言,是没有区别的,那是权限控制的事了。你可以这样设计 id,fromUser,toUesr,title,content,对应含义分别为,主键,来自谁的留言,给谁的留 言,标题,内容
谢谢你的回复,感觉你的回答让我了解了一些 但是可以详细回答你说的这个问题么 1. 你说的方式out了,现在一般权限过滤,都是根据你的路径来判断是否登录, 用过写一个过滤器来,判断该路径是否合法,否则跳转到登录页面; [/quote]看看这个http://blog.csdn.net/shadowsick/article/details/8572467 还有这个spring security3 自定义权限管理 http://blog.csdn.net/shadowsick/article/details/8575062[/quote] 谢了!!!明白了~~~
Giberson1 2013-11-30
  • 打赏
  • 举报
回复
引用 15 楼 u011133213 的回复:
[quote=引用 2 楼 Giberson1 的回复:] 我帮你详细解答下,记得多给我点分。 【登录】 1. 你说的方式out了,现在一般权限过滤,都是根据你的路径来判断是否登录, 用过写一个过滤器来,判断该路径是否合法,否则跳转到登录页面; 2. 一般来说,一个帐号可以被多个人同时在多个地方登录。如果你要做到单一登录, 即一个帐号同时,只能被一个用户登录,则需要做额外的判断,比如你可以记录 该帐号当前登录ip,时间,次数等,也或者直接把登录后的帐号存在application对象中, 这样,下次再有人登录,就通过去application对象里面查找来判断是否当前有人登录 3. session是服务器端控制,你单凭一个ie浏览器,是无法伪造登录的,另外application 只要你服务器不停,就一直生效。 【留言板】 1. 你记录留言的时候,把当前时间记录下来,下次再记录第二条留言时候,将当前时间 和上条留言时间比较,一分钟之内,则不让它留言,反之让他留言 2. 管理员和普通用户留言,是没有区别的,那是权限控制的事了。你可以这样设计 id,fromUser,toUesr,title,content,对应含义分别为,主键,来自谁的留言,给谁的留 言,标题,内容
谢谢你的回复,感觉你的回答让我了解了一些 但是可以详细回答你说的这个问题么 1. 你说的方式out了,现在一般权限过滤,都是根据你的路径来判断是否登录, 用过写一个过滤器来,判断该路径是否合法,否则跳转到登录页面; [/quote]百度上搜“登录过滤器”
加载更多回复(20)

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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