刚接触web开发...比较想明白这两块的做法...喜欢琢磨,所以想来问下各位关于这两块自己的想法哈
登陆这块:
1.登陆这块我想知道,成功登陆了之后会在Session域里面存放你的用户名和密码么???其他页面用session来判断是否已经登陆了?还是怎么的
2.登陆之后,要保存一段时间的话,是用cookie么??如果我这边登陆了我的账号,其他人电脑要登陆,怎么提示他已经登陆,是用application域来存放已经登陆的用户么?
3.如果这两个问题都是这样,那么如果Session域里自己弄一个用户名和密码进去,是否就可以伪造已经登陆???
如果用application域来存放已经登陆的用户的话,那么用户如果不按“注销”按钮,直接关掉了浏览器的话,这个用户是不是还挂在application域里面??还是说需要有个什么东东来监听他是否已经“失去了连接”
留言板这块:
我初略地想的话,留言板这块是通过数据库的一个表来保存用户门的留言和一些其他信息.
1.如果它一直留言,我肯定不愿意,想让这个IP过1分钟才能继续下一次留言,这个要怎么考虑
2.如果需要增加一个管理员的模块,管理员要对一个用户的留言进行回复的话,那么数据库表的设计,一般是怎样的
由于没有接触过web类的项目,很多都不知道,这两块知识,希望企业里做过的人给下解答!!!
------解决思路----------------------
登陆这块:
1.登陆这块我想知道,成功登陆了之后会在Session域里面存放你的用户名和密码么???其他页面用session来判断是否已经登陆了?还是怎么的
个人觉得 session存放用户名,访问权限等,一般不会存放密码,存了也没啥用。你访问的页面可能需要用户名或者验证访问权限,可以直接从session中取出再比较,但是页面中一般不会再需要验证密码了。
2.登陆之后,要保存一段时间的话,是用cookie么??如果我这边登陆了我的账号,其他人电脑要登陆,怎么提示他已经登陆,是用application域来存放已经登陆的用户么?
session是有默认时效的,一般30min,cookie也可以设置的。session在服务器端会自动保留设置时间的。关于如何验证,我也不太清楚,但个人觉得应该不是存在application中,因为application中存的资源有限,是比较宝贵的资源。
3.如果这两个问题都是这样,那么如果Session域里自己弄一个用户名和密码进去,是否就可以伪造已经登陆???
如果用application域来存放已经登陆的用户的话,那么用户如果不按“注销”按钮,直接关掉了浏览器的话,这个用户是不是还挂在application域里面??还是说需要有个什么东东来监听他是否已经“失去了连接”
关掉浏览器是肯定还在application中的。
------解决思路----------------------
我帮你详细解答下,记得多给我点分。
【登录】
1. 你说的方式out了,现在一般权限过滤,都是根据你的路径来判断是否登录,
用过写一个过滤器来,判断该路径是否合法,否则跳转到登录页面;
2. 一般来说,一个帐号可以被多个人同时在多个地方登录。如果你要做到单一登录,
即一个帐号同时,只能被一个用户登录,则需要做额外的判断,比如你可以记录
该帐号当前登录ip,时间,次数等,也或者直接把登录后的帐号存在application对象中, 这样,下次再有人登录,就通过去application对象里面查找来判断是否当前有人登录
3. session是服务器端控制,你单凭一个ie浏览器,是无法伪造登录的,另外application
只要你服务器不停,就一直生效。
【留言板】
1. 你记录留言的时候,把当前时间记录下来,下次再记录第二条留言时候,将当前时间
和上条留言时间比较,一分钟之内,则不让它留言,反之让他留言
2. 管理员和普通用户留言,是没有区别的,那是权限控制的事了。你可以这样设计
id,fromUser,toUesr,title,content,对应含义分别为,主键,来自谁的留言,给谁的留 言,标题,内容
------解决思路----------------------
楼主想的有点复杂吧...既然是初学者,同为初学者的我有不同的想法。
1,做登陆,你要把用户信息放到application中你不觉得搞得有点大么?如果判断用户有没有在其他地方登陆你可以用一个标识位标识是否登陆
2,session存放的信息可以有很大的作用但是也存在风险
3,cookie的确可以保存你的登陆时间
留言板:
留言板的实现你可以参考一下某些贴吧的做法,自己模拟尝试着做
------解决思路----------------------
1.yes。2.可以设置session的有效时间。3.session是在服务器端控制,用户不可以随便的伪造。b/s不是很擅长做这个功能,可以把session的有效时间设置的短一些,在所有页面做个ajax,每隔一段时间访问服务器。
------解决思路----------------------
.可以设置session的有效时间
------解决思路----------------------
服务器会为每个登录用户保存session,相当于个hashmap,保存在内存中的,这个hashmap的key就是sessionId,当用户登录后,下次的每次请求都会在http头部加上这个sessionid,从而找到这个session。
session中可以保存用户信息,或者自定义,看你的系统需要啥了。如果本地要保存cookie的话让用户下次自动登录,那肯定是要在cookie中保存用户名,用户密码了。
至于实现已经登录,一般都是系统另外单独处理。比如用单例模式保存个用户的hashmap,key保存用户名,value保存用户登录状态,每次登录验证的时候去查找这个hashmap即可。
对于留言板模块,我首先想到是在页面用js控制就可以实现1分钟后再能回复,但是考虑到页面关闭后再打开去回复,那应该只能在服务端处理了。那就在用户每次回复后保存当前系统时间到session中,下次回复时比对,如果小于1分钟,返回,反之,保存内容并更新session。
这样应该差不多了吧。不用客气
------解决思路----------------------

------解决思路----------------------
看看这个http://blog.csdn.net/shadowsick/article/details/8572467
还有这个spring security3 自定义权限管理 http://blog.csdn.net/shadowsick/article/details/8575062
------解决思路----------------------
我帮你详细解答下,记得多给我点分。
【登录】
1. 你说的方式out了,现在一般权限过滤,都是根据你的路径来判断是否登录,
用过写一个过滤器来,判断该路径是否合法,否则跳转到登录页面;
2. 一般来说,一个帐号可以被多个人同时在多个地方登录。如果你要做到单一登录,
即一个帐号同时,只能被一个用户登录,则需要做额外的判断,比如你可以记录
该帐号当前登录ip,时间,次数等,也或者直接把登录后的帐号存在application对象中, 这样,下次再有人登录,就通过去application对象里面查找来判断是否当前有人登录
3. session是服务器端控制,你单凭一个ie浏览器,是无法伪造登录的,另外application
只要你服务器不停,就一直生效。
【留言板】
1. 你记录留言的时候,把当前时间记录下来,下次再记录第二条留言时候,将当前时间
和上条留言时间比较,一分钟之内,则不让它留言,反之让他留言
2. 管理员和普通用户留言,是没有区别的,那是权限控制的事了。你可以这样设计
id,fromUser,toUesr,title,content,对应含义分别为,主键,来自谁的留言,给谁的留 言,标题,内容
谢谢你的回复,感觉你的回答让我了解了一些
但是可以详细回答你说的这个问题么
1. 你说的方式out了,现在一般权限过滤,都是根据你的路径来判断是否登录,
用过写一个过滤器来,判断该路径是否合法,否则跳转到登录页面;
------解决思路----------------------
.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]