用cookie保存登录验证信息时,浏览每个页面都需要与数据库验证?
很多时候我们都通过cookie验证用户登录信息,这样在浏览某个页面时,
系统会自动读取某些cookie,如果不为空,则与数据库用户帐户及密码进行对比,
如果通过,就表明此用户成功登录,好处在于不需要用户再次输入帐号与密码。
现在的问题是,难道每浏览一次页面,就需要重复上面的操作“读取cookie-与数据库对比”?
这样对系统资源占用太大了吧。
使用cookie本意之一是取代session保存信息,以便降低系统开销(当然也有方便用户下次登录时免去输入之苦),如果按上面的处理办法,反而加大了系统资源占用。
大家有好的解决办法么。我想了一些办法,但感觉都不是很好:
1.用cookie保存一个有效期,下次浏览网站时,系统自动验证,然后通过session保存一个bool值,
表明此用户已登录,浏览不同的页面时,通过session来判断是否登录,免去读数据库操作。
不足之处:在线用户较多时,session将占用较多系统资源,特别是内存占用。
2.第二种办法:当系统读取cookie中的帐户与密码信息,并与数据库数据对比成功后,向cookie中写入另一个键值,表明此用户已成功登录。这样在浏览不同的页面时,可以根据这个cookie的值来判断是否已登录。问题是,如果此cookie用一个固定值,如cookie("login")=1,那么恶意用户可以伪造这个cookie("login"),失去意义。改进办法是:对用户帐户名或密码或ip进行某种加密,将得到的加密值写入cookie("login")。这样恶意用户就很难伪造。
不足之处:每点击打开一个页面,系统就会对cookie("login")进行解密运算,将得到值与ip或用户名进行对比。这样会导致CPU资源耗用较大。
3.第三种办法:最佳办法,请高手指点