ASP.NET成员资格 - 是否在Web中切换应用程序名称.Config是一个好主意?

时间:2010-09-26 23:30:19

标签: asp.net-membership

我想出了一个有趣的方法来解决以下问题,我想知道是否有更好的方法来实现我的目标。

基本上,我正在创建一个基本的cms系统,用户可以注册自己的微型网站并拥有自己的用户。我正在使用asp.net会员资格api。

我想要一种方法来隔离各个微型网站的用户,以便通过www.mysite.com/johns-site进行身份验证的用户也不会通过www.mysite.com/pauls-site进行身份验证。

我还想要一种方法将用户名与微型网站相关联,这样如果用户在一个网站上注册为bob,则不会阻止另一个用户注册为不同微型网站的bob。

为实现这一点,我注意到在asp成员资格表中,用户属于某个应用程序。每次收到请求时,我都有一个方法可以根据URL切换web.config中的applicationName。

这确实很容易实现我的目标,但感觉有点hacky。是否有替代方式来切换成员资格提供者的应用程序?

2 个答案:

答案 0 :(得分:2)

可以在运行时获取/设置ApplicatioName属性,但是根据下面的MSDN帖子,不建议使用它,因为该属性不是线程安全的,即如果多个用户同时为不同的应用程序创建帐户,没有正确地为每个用户分配ApplicationName。

语法:

Membership.ApplicationName = "MyAppName"

OR

Membership.ApplicationName = "MyAppName";

进一步阅读:

http://msdn.microsoft.com/en-us/library/system.web.security.membership.applicationname.aspx

注意:

您是否正在从应用程序代码更新web.config文件的内容?如果是这样,那肯定是“hacky”。另外,编辑web.config将删除所有活动会话(如果您的应用当然使用会话状态)。

答案 1 :(得分:0)

我同意,这可能会让你在某个时候付钱。

实现这一目标的正确方法将涉及每个virtual directory(或您所说的微型网站),每个<membership>元素定义具有相同连接字符串但不同applicationName属性的{{1}}元素。