登陆的时候想用cookie 进行记录。记录的时候会把用户名和密码进行加密记录到cookie里面去。
然后登陆成功后,会进入一个主页。登陆后的所有页面都会继承一个基类。在这个基类里的OnInit方法里面会去取出记录的cookie 的值,然后进行解密,在验证是否为有效账号密码。如果有效则可以继续进行操作。否则清除cookie,跳转到登录页面要求重新登陆。这种方式不知道是否有什么问题,各位讨论讨论。
我比较担心的是因为密码也记录在cookie里面,虽然进行了加密,好像存在很大的安全隐患,另外一个就是在基类的oninit方面里面验证,也就意味着每次刷新或者是做一个什么操作都会要执行一次验证,好像很浪费资源,感觉非常繁琐。哪位大哥有较好的方式可以推荐推荐。
你去看下identity的实现方式
这种方式 支持 多账号系统登录吗?就比如像天猫一样,有商家登录。然后有 自己天猫后台系统的管理员登录得多种登录。
个人认为你的思路整体是没问题的,但是密码为什么要放在COOKIE里面呢?
而且每刷新一次页面都要验证一次有什么问题呢?除非你的验证逻辑很复杂,复杂到超过1秒钟的时间。
假如有这么一个场景,用户的级别由普通升级到VIP,这是不是也就意味着他所能操作的权限相应会增加?如果增加了,但是用户现在还是普通的权限,还没重新登录,这个怎么处理?假如用户重新登录可以解决这个问题,但是是最好的方法吗?
放密码是为了验证 这个登陆账号和密码是相匹配的,如果只放用户名,密码不放的话。这样如果人家知道了某些账号,那么可以直接更改客户端的cookie为其他用户的用户名的值,就可以操作其他用户了。如果是还要匹配密码的话,就会更加安全些,主要是从安全角度考虑的。
@yzy: 你不是把用户名加密了吗?
@苏本东: 恩 是加密了。
我们是这么做的。每一次登录的时候更新登录记录表里一个guid,把这个guid和帐户名存到cookie,guid和数据库一样说明已登录,其他的你自己想。
这样做从结构设计上是没错的, 就算你加了密,人家依旧可以伪造cookie. 依然不安全。
不应该把用户名和密码都保存到cookie, 我觉得最好的做法是: 产生其它的标识符, 像@Cherbim说的一样, 产生一个guid保存到cookie, 然后每次用这个guid与服务器端的进行对比。
至于你写的基类, 打开\刷新页面就会进行OnINIT工作, 这样没什么问题的。 如果不这么干, 验证是否登陆就没意义了。
不用每次都获取cookie 验证一次吧 login.aspx里边验证完不就 创建了一个用户session么? 后面验证这个session不为空 空的话就跳转到登陆页面