单个网站中的多个 ASP.NET 身份验证



我目前正在构建一个新的 ASP.NET MVC 5项目,其中包含一个专用于管理员的私人部分。本节以模块化方式开发,并具有自己的身份验证(使用 ASP.NET 身份)我还希望为同一网站中的客户设置一个受限部分,这些客户具有不同的身份验证(也使用 ASP.NET 身份)。

是否可以根据网站的位置使用不同的User.Identity对象?(例如:网站根目录下的"客户用户"和"外联网用户"(如果我们转到/Extranet)

这是我目前为这两个部分编写的代码:

客户端部分(主要 ASP.NET 应用程序):

public void ConfigureAuth(IAppBuilder app)
        {
            app.UseCookieAuthentication(new CookieAuthenticationOptions
            {
                AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
                CookieName = "ClientCookie",
                LoginPath = new PathString("/Account/LoginRegister"),
                ExpireTimeSpan = TimeSpan.FromHours(4),
                Provider = new CookieAuthenticationProvider()
            });
        }

外联网部分(存储在模块项目中):

public void ConfigureAuth(IAppBuilder app)
        {
            app.UseCookieAuthentication(new CookieAuthenticationOptions
            {
                AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
                CookieName = "ExtranetCookie",
                LoginPath = new PathString("/Extranet/Account/Login"),
                Provider = new CookieAuthenticationProvider()
            });
        }

谢谢!

当然,

您可以在应用程序中有多个DbContext(或IdentityDbContext)元素。问题是在启动过程中,您需要提供数据库和用户管理器 截至CreatePerOwinContext .事件 这可以如这篇文章所示处理。

定义两个用户和登录管理器类:

public void ConfigureAuth(IAppBuilder app)
{
    app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
    app.CreatePerOwinContext<ApplicationSignInManager>(ApplicationSignInManager.Create);
    // Add our custom managers
    app.CreatePerOwinContext<CustomUserManager>(CustomUserManager.Create);
    app.CreatePerOwinContext<CustomSignInManager>(CustomSignInManager.Create);
}

并在相应的控制器中引用正确的实现:

private CustomSignInManager _signInManager;
public CustomSignInManager CustomSignInManager
{
    get
    {
        return _signInManager ?? HttpContext.GetOwinContext().Get<CustomSignInManager>();
    }
    private set { _signInManager = value; }
}

我没有自己尝试,但approch看起来很聪明。

相关内容

  • 没有找到相关文章

最新更新