@
thenewbie 脱离场景谈最佳实践,难啊。
我的习惯:
数据库设置一张 Users 表,与认证有关系的字段为 { Id, 用户名,加密密码,密码盐,验证标识 }
默认验证标识为 null。用户登录时,输入明文密码,传输至 Server,加上密码盐,计算密码是否正确。正确的话生成一个验证标识(Guid)存入数据库,并将验证标识写入用户端Cookie,用户端Cookie的加密是一定要做的,各个框架都有自己的办法,不赘述。
当用户访问网站时,会检测用户送到服务端的Cookie,是否有正确的验证标识,如果有,则用户被当成已经认证的;没有或者不正确,则重定向用户到登录页。
这样也会有一个问题:用户在机器A上登录不退出,又在机器B上登录了,这时候因为验证标识变化了,机器A上的用户如果刷新页面,则会因为本机Cookie验证标识和服务器端不一致,要求重新登陆。这个这不符合场景要求,也可以通过维护多个验证标识的方式解决,也不赘述。
抛砖引玉,验证还比较好做,授权就忒复杂了。