2016-06-09 108 views
4

我在使用身份和城堡windsor的典型asp.net项目中的owin配置有问题。 的事情是我真的很喜欢怎样的身份和owin所管理的所有用户的东西像发送cookie来登录电子用户等,但它需要下面的代码:与owin和身份的城堡温莎

[assembly: OwinStartupAttribute(typeof(OwinStartUp.Startup))] 
namespace OwinStartUp 
{ 
public partial class Startup 
{ 
    public void Configuration(IAppBuilder app) 
    { 

     app.CreatePerOwinContext(DbOwinHelper.CreateDbContext); 
     app.CreatePerOwinContext<ApplicationUserManager>(DbOwinHelper.CreateUserManager); 
     app.CreatePerOwinContext<ApplicationSignInManager>(DbOwinHelper.CreateSignInManager);      

     app.UseCookieAuthentication(new CookieAuthenticationOptions 
     { 
      AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, 

      LoginPath = new PathString("/Account/Login"), 
      Provider = new CookieAuthenticationProvider 
      { 
       OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, MyIdentityUser, Guid>(
     validateInterval: TimeSpan.FromMinutes(30), 
     regenerateIdentityCallback: (manager, user) => user.GenerateUserIdentityAsync(manager), 
     getUserIdCallback: (user) => Guid.Parse(user.GetUserId())) 
      } 
     }); 
    } 
} 

}

所以如控制器我必须这样写:

var signInManager = HttpContext.GetOwinContext().Get<ApplicationSignInManager>(); 

,而不是这个(我preffer)

var signinmanager = container.Resolve<ISignInManager<IMyIdentityUser>>(); 

或至少

var signinmanager = container.Resolve<ApplicationSignInManager>(); 

如何集成温莎与owin管道?或者,至少,如何在不使用owin的情况下将CookieAuthentication与我的自定义ApplicationSignInManager一起使用(并且不需要自己重写整个cookie身份验证)?

我已经看到很多与城堡windsor作为owin依赖解析器的文章,但它主要是关于自我托管owin。

回答