Form 验证扩展:如何让 Form 验证支持 多个登录窗口?
2005-11-11 03:24 晓风残月 阅读(1274) 评论(2) 编辑 收藏 举报目前正在着手一个网站(人才网型),准备用form验证,但是这个网站有一个会员区,而且还需要区分个人用户和企业用户,同时还有后台管理管理,因此我就准备了三个登录页面,因为三个用户,对应着三个不一样的表,一个登录页面,我没办法判断待验证的用户是什么类型的用户。form验证可以支持多个登录窗体吗?比如,我的站点下有admin目录和company目录,而且各自包含了login。aspx页面,我希望未授权用户访问admin和company目录,分别自动跳转到相应的login。aspx?但是我们的loginaspx页面只能在站点根目录(虚拟目录级别)设置啊,二级目录的webconfig是不能设置的,
<forms name="myaspnet" loginUrl="login.aspx" protection="All" timeout="20" />
</authentication>
那么,很多朋友就会说了,登录页上提供几个单选按钮不就行了吗?但是,我是不希望 管理员 这个路口被公开的。
认真想了一下,觉得form验证是基于角色验证,因此,假如增加一张User表,存储登录信息,其余的 admin 、hunter、company都与User产生一对一的联系(不知道能不能叫一对一),分别存储各自的详细信息(从面向对象的角度看,有点继承的问道,毕竟 admin,hunter,company都是网站的用户,PS:OO不是很熟悉)。登录的时候,都去读取User信息,同时Role表中内置 Admin ,hunter, company 角色(当然可以扩展),然后各自的目录下的webconfig:
admin目录:
<authorization>
<allow roles="Admin" /> <deny users="*" />
</authorization>
</system.web>
<authorization>
<allow users="*" /> </authorization>
<location path="page.aspx">
<authorization>
<allow roles="Company" /> <deny users="?" />
</authorization>
</location>
</system.web>
<authorization>
<allow users="*" /> </authorization>
<location path="page.aspx">
<authorization>
<allow roles="Hunter" /> <deny users="?" />
</authorization>
</location>
</system.web>
关系图:
这样的设计,应该比较符合OO的思想,但是,多以一张表出来,就意味着查询要链接表,更新、删除要级联,又增加了数据维护的复杂度,总觉得怪怪的.