2015-06-12 49 views
2

有沒有人試圖使用IdentityManager與vNext?IdentityManager with VNext

我遇到了app.UseIdentityManager(IdentityManagerOptions)擴展方法的問題。

它不存在。

因此,我嘗試使用爲UseIdentityServer(找到here)所做的擴展方法,將所有與服務器相關的方面都更改爲manager。 當我這樣做,我得到的System.NullReferenceException排隊43

上如何去與擴展方法的任何樣的建議將非常感激

+0

請參閱從IdentityServer3這個樣本,其中IdentityManager實現:https://開頭的github .com/IdentityServer/IdentityServer3.Samples/tree/master/source/AspNetIdentity/SelfHost 很遺憾,這個示例已損壞。 –

+0

@CorstianBoerman。感謝您的鏈接。在使用IdentityManager和Server(用於AspIdentoty)後,我發現底層問題是vNext與Identity3協同工作,而Identity Server和管理員仍然使用Identity 2.0。如果我錯了,請糾正我。再次,謝謝你的示例鏈接 – MRainzo

+1

的確如此。我自言自語說,我已經讀過某處沒有支持asp.net 5的計劃,無論如何,它看起來已經改變了主意:https://github.com/IdentityManager/IdentityManager/issues/144 –

回答

-2

我使用vNext,我已經注意到,很多事情已經改變,並將繼續改變。

爲了我自己的需要,我已經能夠很容易地識別並運行身份,並且我必須採取兩個步驟才能使其正常運行。我所做的也應該爲你工作。

在你StartUp.cs,你需要確保你添加以下到ConfigureServices方法:

services.AddIdentity<ApplicationUser, IdentityRole>() 
      .AddEntityFrameworkStores<ApplicationDbContext>() 
      .AddDefaultTokenProviders(); 

此外,你需要配置你的應用程序使用的身份,要做到這一點,你需要在Configure()方法中執行以下操作:

app.UseIdentity(); 
+0

你我正在談論身份。 IdentityManager是一些額外的軟件包,可以輕鬆添加用戶等,而無需先編寫一些邏輯。 (請參閱:https://github.com/IdentityManager/IdentityManager) –

0

我正在使用ASPNET 5 beta6,並且我得到了這個工作。

嘗試使用this已更新IApplicationBuilder擴展名在Samples分支中找到了分支。重新調整的方法接受IdentityManagerOptions而非IdentityServerOptions和編輯生成器來UseIdentityManager

總之,這裏是我的擴展方法是什麼樣子

public static class IApplicationBuilderExtensions 
{ 
    public static void UseIdentityManager(this IApplicationBuilder app, IdentityManagerOptions options) 
    { 
     app.UseOwin(addToPipeline => 
     { 
      addToPipeline(next => 
      { 
       var builder = new AppBuilder(); 

       var provider = app.ApplicationServices.GetService<IDataProtectionProvider>(); 

       builder.Properties["security.DataProtectionProvider"] = 
        new DataProtectionProviderDelegate(purposes => 
        { 
         var dataProtection = provider.CreateProtector(string.Join(",", purposes)); 
         return new DataProtectionTuple(dataProtection.Protect, dataProtection.Unprotect); 
        }); 

       builder.UseIdentityManager(options); 

       var appFunc = 
        builder.Build(typeof (Func<IDictionary<string, object>, Task>)) as 
         Func<IDictionary<string, object>, Task>; 
       return appFunc; 
      }); 
     }); 
    } 
}