首页 新闻 赞助 找找看

.net登陆问题讨论,有经验的朋友帮忙出出主意。

0
[待解决问题]

登陆的时候想用cookie 进行记录。记录的时候会把用户名和密码进行加密记录到cookie里面去。

然后登陆成功后,会进入一个主页。登陆后的所有页面都会继承一个基类。在这个基类里的OnInit方法里面会去取出记录的cookie 的值,然后进行解密,在验证是否为有效账号密码。如果有效则可以继续进行操作。否则清除cookie,跳转到登录页面要求重新登陆。这种方式不知道是否有什么问题,各位讨论讨论。

我比较担心的是因为密码也记录在cookie里面,虽然进行了加密,好像存在很大的安全隐患,另外一个就是在基类的oninit方面里面验证,也就意味着每次刷新或者是做一个什么操作都会要执行一次验证,好像很浪费资源,感觉非常繁琐。哪位大哥有较好的方式可以推荐推荐。

yzy的主页 yzy | 菜鸟二级 | 园豆:317
提问于:2014-12-03 16:23
< >
分享
所有回答(5)
0

你去看下identity的实现方式

吴瑞祥 | 园豆:29449 (高人七级) | 2014-12-03 16:26

这种方式 支持 多账号系统登录吗?就比如像天猫一样,有商家登录。然后有 自己天猫后台系统的管理员登录得多种登录。

支持(0) 反对(0) yzy | 园豆:317 (菜鸟二级) | 2014-12-03 17:19
0

个人认为你的思路整体是没问题的,但是密码为什么要放在COOKIE里面呢?

而且每刷新一次页面都要验证一次有什么问题呢?除非你的验证逻辑很复杂,复杂到超过1秒钟的时间。

假如有这么一个场景,用户的级别由普通升级到VIP,这是不是也就意味着他所能操作的权限相应会增加?如果增加了,但是用户现在还是普通的权限,还没重新登录,这个怎么处理?假如用户重新登录可以解决这个问题,但是是最好的方法吗?

屌丝大叔的笔记 | 园豆:2 (初学一级) | 2014-12-03 16:43

放密码是为了验证 这个登陆账号和密码是相匹配的,如果只放用户名,密码不放的话。这样如果人家知道了某些账号,那么可以直接更改客户端的cookie为其他用户的用户名的值,就可以操作其他用户了。如果是还要匹配密码的话,就会更加安全些,主要是从安全角度考虑的。

支持(0) 反对(0) yzy | 园豆:317 (菜鸟二级) | 2014-12-03 17:12

@yzy: 你不是把用户名加密了吗?

支持(0) 反对(0) 屌丝大叔的笔记 | 园豆:2 (初学一级) | 2014-12-03 23:27

@苏本东: 恩 是加密了。

支持(0) 反对(0) yzy | 园豆:317 (菜鸟二级) | 2014-12-04 11:12
0

我们是这么做的。每一次登录的时候更新登录记录表里一个guid,把这个guid和帐户名存到cookie,guid和数据库一样说明已登录,其他的你自己想。

Cherbim | 园豆:323 (菜鸟二级) | 2014-12-08 00:28
0

这样做从结构设计上是没错的, 就算你加了密,人家依旧可以伪造cookie.  依然不安全。 

不应该把用户名和密码都保存到cookie, 我觉得最好的做法是: 产生其它的标识符, 像@Cherbim说的一样, 产生一个guid保存到cookie, 然后每次用这个guid与服务器端的进行对比。 

至于你写的基类, 打开\刷新页面就会进行OnINIT工作, 这样没什么问题的。 如果不这么干, 验证是否登陆就没意义了。

问天何必 | 园豆:3311 (老鸟四级) | 2014-12-08 13:11
0

不用每次都获取cookie 验证一次吧  login.aspx里边验证完不就 创建了一个用户session么?   后面验证这个session不为空 空的话就跳转到登陆页面 

mushishi | 园豆:230 (菜鸟二级) | 2015-01-25 21:21
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册