1

我已阅读此线程 SimpleMembership - 有人让它对 n 层友好吗? 但它直接谈到使 simplemembership n-tier 友好。即使认为这是我提问的下一个可能进展,我还没有绕过我目前的障碍。

我有多个MVC 4应用程序,它们都使用相同的数据库表进行登录,我想维护应用程序之间的日志连接。我已经修改了 SimpleMembership(控制器、视图和 css)和相关的数据库表(我添加了几个表,这些表定义了允许的应用程序和这些应用程序中的角色),剩下要做的就是使单个登录应用于所有应用程序。这是任何人做过或知道如何做的事情吗?最终,我想将这些应用程序的登录部分移到它自己的项目中,因为每次编辑某些内容时都必须在每个应用程序中更改 、 和 控制器 csshtml

如果有人有任何其他可能会更好的建议,我会全力以赴!

4

2 回答 2

0

我似乎记得,所需要的只是在每个应用程序<system.web>的 web.config 部分中为每个应用程序使用相同的 machineKey 配置:

<machineKey validationKey="valkey" decryptionKey="deckey" decryption="3DES" validation="SHA1" />
于 2013-09-30T17:37:05.933 回答
0

我不完全确定最佳实践是什么,但我想到了一个想法。

一个主要的限制是能够为这些用户共享应用程序池和会话。

一种方法(同样,我不确定最佳实践是什么)是从一个地方设置所有这些应用程序。如果你愿意的话,一个入门级。这将只有一个用于启动应用程序的 global.asax 定义。每个应用程序将从一个地方开始,允许它们共享相同的范围。这可以通过 global.asax 文件中的几个步骤来完成。

右键单击 global.asax 并单击显示标记

<%@ Application Codebehind="Global.asax.cs" Inherits="appNamespace.ApplicationModerator" Language="C#" %>

global.asax.cs 内部

public class ApplicationModerator : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        new namespace1.TierApplication1();
        new namespace2.TierApplication2();
        new namespace3.TierApplication3();
    }
}

TierApplication1(它们都将不同,但具有相似的功能)

public class TierApplication1 
{
    public TierApplication1 ()
    {
        AreaRegistration.RegisterAllAreas();

        Database.SetInitializer<DbContext>(null);

        RegisterGlobalFilters(GlobalFilters.Filters);
        RegisterRoutes(RouteTable.Routes);
    }

    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new HandleErrorAttribute());
    }

    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        routes.IgnoreRoute("favicon.ico");

        routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Account", action = "LogOn", id = UrlParameter.Optional }, // Parameter defaults
        );
    }
}
于 2013-09-30T17:45:49.600 回答