首页 新闻 会员 周边 捐助

使用Forms验证时用户Profile的存取方案

0
悬赏园豆:40 [已解决问题] 解决于 2013-08-02 13:46

Profile包含很少的东西,比如用户名称、ID、头像、个人空间URL,这些最基本的。

以前用session保持登录状态时,这些东西可以全都放到Session["CurrentUser"]中。

但是现在用了forms验证,从User.Identity.Name中可以取到唯一key(虽然叫name,但是我觉得大多数情况下存的还是用户的email或者用户id吧,如果用户名称唯一的话倒是也可以放),假设现在系统中把ID存到User.Identity.Name中,当然取出来的时候需要Convert一下。

那么用户名称、头像、个人空间URL这些数据可以放到哪儿呢,基本上所有页面都会用到的,比如博客园,在右上角就会显示这些信息。

Session:有点不合适啊,如果用户勾选了“记住我”,auth cookies留在客户端俩月,这不还得加个判断看数据是否是失效了的,失效了再去取来放着,多个站点使用session的话还得用sqlserver或者stateserver方案什么的,有点麻烦。

Cache:基本上跟session是一样了,没了再取塞进去,可以设个滑动过期什么的,。

Cookies:这些信息都不是敏感信息,因为具体限定操作者身份的还是User.Identity.Name,其他只是为了方便读取而已,就算他篡改了,也只是自己的界面出问题,因为这些信息只用于显示。

还有一个想法就是,扩展forms验证本身存储的数据,比如扩展User.Identity,现在不是只有Name吗,能不能扩展成一个UserProfile对象来使用呢?

当然刚才也说了,如果数据不敏感,直接明文存也没什么,犯不着搭他的加密顺风车。

不知道我的想法有没有误区。大家在项目中使用的是哪种方式呢?望指点讨论一二啊~~

空葫芦的主页 空葫芦 | 初学一级 | 园豆:9
提问于:2013-08-01 19:16
< >
分享
最佳答案
1

Cookie中保存User.Identity.Name,需要显示用户信息的地方根据User.Identity.Name从缓存(比如memcached)中取,如果缓存中没有,就从数据库中取,并放入缓存中。

收获园豆:40
dudu | 高人七级 |园豆:30948 | 2013-08-01 21:41

谢谢村长回答!~这就是说选的cache方案啦。

我再琢磨琢磨,cookies和cache二选一。

空葫芦 | 园豆:9 (初学一级) | 2013-08-02 09:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册