2016-06-09 93 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。

回答