首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

ASP.net的Form验证模式_代替以前的Session_IIS重启后Session有关问题

2012-03-04 
ASP.net的Form验证模式__代替以前的Session__IIS重启后Session问题以前用Session方式//登录成功Session[U

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楼的方法,需要时从数据库读...适当用缓存减少数据库交互...
[解决办法]

探讨
项目紧,先这么实现了:

void Session_Start(object sender, EventArgs e)
{
// 在新会话启动时运行的代码

if (Session["Deptid"] == null)
{
Response.Redirect("/");
}

}

当Session没了就让他再登录一次。理论上也实现了我想要的:权限整体设置,不用一个页一个页设置的目标了。

热点排行