ASP.net的Form验证模式__代替以前的Session__IIS重启后Session问题
以前用Session方式
//登录成功
Session["UserName"] = dv[0]["UserName"].ToString();
Session["DeptId"] = dv[0]["DeptId"].ToString();
===================================
现在我想用ASP.net的Form验证模式。
现在可以用User.Identity.Name来代替Session["UserName"]
但我应该用什么来代替Session["DeptId"]呢?现在是一个,如果我有多个Session呢?
====================================
期间我想过解决方案:除了UserName外的Session变量,我还是用Session
这样会有个问题:
如果只是Session时,我一重启IIS,再判断Session没值了,所以再让他登录。
而现在我用了Form验证模式后,我重启IIS后,User.Identity.Name仍能正常工作,重启IIS不会对他有影响。而这时如果我有一部分数据是用Session的,这些数据就没了。
我的本意是想用Form验证模式,不用在每页都要判断一下权限,而现在IIS一重启,那些Session都没了,相关页面里我还得判断一下是不是Session没了,如果没了就根据UserName再查一下数据库,这样就又回到以前的Session时代了。
=====================================
怎么弄一下就可以扩展出像User.Identity.Name这样调用UserName一样方便的调用其它的数据。
这里我可能说的不明白,不过相信遇到过这问题的高人应该能明白我在说什么,还望不吝赐教
[解决办法]
1.可以自定义MEMBERSHIP
2.FORM认证可以用COOKIE方式
3.这些都是MEMBERSHIP SERVICE的功能,你查一下吧
[解决办法]
Form验证的本质是用cookie 存放用户信息
既然你都有了User.Identity.Name 那根据这个就可以从数据库把用户其他信息都读出来
无法是你自己写个方法实现
[解决办法]
正规的做法是扩展MembershipProvider...继承它自己写一个Provider...
要是嫌太麻烦就用2楼的方法,需要时从数据库读...适当用缓存减少数据库交互...
[解决办法]