1
AntiGameZ 2013-02-28 17:12:10 +08:00 1
SAML,Radius这种?
|
2
thenewbie OP |
3
AntiGameZ 2013-02-28 18:41:59 +08:00 1
@thenewbie 脱离场景谈最佳实践,难啊。
我的习惯: 数据库设置一张 Users 表,与认证有关系的字段为 { Id, 用户名,加密密码,密码盐,验证标识 } 默认验证标识为 null。用户登录时,输入明文密码,传输至 Server,加上密码盐,计算密码是否正确。正确的话生成一个验证标识(Guid)存入数据库,并将验证标识写入用户端Cookie,用户端Cookie的加密是一定要做的,各个框架都有自己的办法,不赘述。 当用户访问网站时,会检测用户送到服务端的Cookie,是否有正确的验证标识,如果有,则用户被当成已经认证的;没有或者不正确,则重定向用户到登录页。 这样也会有一个问题:用户在机器A上登录不退出,又在机器B上登录了,这时候因为验证标识变化了,机器A上的用户如果刷新页面,则会因为本机Cookie验证标识和服务器端不一致,要求重新登陆。这个这不符合场景要求,也可以通过维护多个验证标识的方式解决,也不赘述。 抛砖引玉,验证还比较好做,授权就忒复杂了。 |
4
thenewbie OP @AntiGameZ 仅仅是“用户登录时,输入明文密码,传输至 Server,加上密码盐,计算密码是否正确。”怎么会 “A上登录不退出,又在机器B上登录了,验证标识变了” ?在生成标识的时候,还加进判断 ip 了么?
PS: 授权啥的... 通常都把信息放到session中么? |
5
thedevil5032 2013-02-28 19:51:04 +08:00 1
@thenewbie 因为 A 和 B 得到的验证标识不是用一个, 所以不一样.
|
6
thedevil5032 2013-02-28 19:51:22 +08:00
@thenewbie 打错, 同一个.
|
7
thenewbie OP @thedevil5032 @AntiGameZ 呃... 好吧,刚刚误解了... orz... 我刚刚怎么想的 >.<
|