【问题标题】:asp.net membershipasp.net 会员
【发布时间】:2011-07-11 10:55:37
【问题描述】:

我正在编写一个 MVC 应用程序,使用 ASP.Net Membership 来保证安全性。该应用程序将允许多个网站从同一个应用程序和数据库运行。

在应用程序上运行的网站将完全相互独立。这些网站的用户只能访问他们的网站。

如果我使用一个 web.config、一个 MVC 应用程序和一个数据库,我能否使用 ASP.NET 成员资格实现特定于站点的安全性?

大概我只有一个应用程序密钥,因此无法使用它来区分站点。我曾考虑过使用角色,但会将角色公开给站点管理员——并且不希望管理员为自己的用户添加/配置不同站点的角色。

这个潜在的问题只是我刚刚发生的,所以任何帮助都将不胜感激。

【问题讨论】:

  • 当您说同一个应用程序和多个网站时,您的意思是它们托管在不同虚拟环境的单个站点中吗?我不明白“从同一个应用程序运行多个网站”这一点。
  • 是的,服务器上有一个 mvc 应用程序,所有相关 URL 都指向该应用程序
  • 如果您的身份验证是在前端应用程序内部处理的,并且 cookie 是由它提供的,那么我认为您无法实现这一点。但是,如果您的前端应用程序只是重定向到其他应用程序,并且这些应用程序有自己的身份验证系统,那么这是可能的。
  • 这是Multi tenent mvc 应用程序吗?
  • @eranga,阅读您发布的 wiki 链接,我想这将是一个多租户应用程序——谢谢,我没有意识到这个概念已经被定义。

标签: asp.net asp.net-membership


【解决方案1】:

您可以将它们作为主站点的子站点(在那里设置 web.config),因此,身份验证渗透到子站点。

【讨论】:

  • 这是否意味着我必须为每个站点部署一次应用程序?
  • 您想要一个包含所有站点凭据的 web.config,即使在单独的虚拟目录和物理站点中也是如此?
【解决方案2】:

角色提供者使用 ApplicationName 属性来过滤角色。在获取角色之前尝试设置该属性。

这样的事情应该可以工作:

Roles.ApplicationName = "MyAppName";
var authorized = Roles.IsUserInRole("Some.user", "admin");

我没有尝试过,它是一个静态属性,可能会给你带来奇怪的结果,所以要小心。最好的方法是实现您自己的提供程序,这样您就可以执行Roles.IsUserInRole("some.user","admin","MyAppName") 之类的操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-17
    相关资源
    最近更新 更多