私は ASP.NET ID を初めて使用し、それがどのように機能するかについてまだ頭を悩ませています。残念ながら、私が試したチュートリアルの多くは Identity 1.0 用であることがわかりましたが、私は Identity 2.0 で作業しようとしています。
私が直面している最大の問題は、単純だと思っていたのに、そうではないことが判明したことです。私がやろうとしているのは、既存のユーザーテーブルで既存のデータベースを使用することです。現在、私ができることは、ユーザーデータを格納するための独自のテーブルを作成するように Identity を取得することだけです。Entity Framework を使用したくありませんが、Identity 2.0 から Entity Framework を分離するのは非常に困難でした。
私の状況では SQL Server を使用していますが、次のリンクで MySQL のカスタム プロバイダーを実装しようと思いました: http://www.asp.net/identity/overview/extensibility/implementing-a-custom-mysql -aspnet-identity-storage-providerおよびhttps://github.com/raquelsa/AspNet.Identity.MySQL。これは、Identity 1 でのみ機能するようです。ただし、Entity Framework を使用する新しいものがあるようです。https://github.com/ILMServices/RavenDB.AspNet.Identityも試しました。
私が試したすべてのことで、次の行に行き詰まります。
var manager = new IdentityUserManager(new UserStore<IdentityUser>(context.Get<ApplicationDbContext>()));
私が直面している問題は、RavenDB の指示に従って ApplicaitonDbContext クラスを削除する必要があることですが、代わりにこの行に何を入力すればよいかわかりません。
私が得るエラーは次のとおりです。
非ジェネリック型 'AspNet.Identity.MySQL.UserStore' は型引数では使用できません
と
タイプまたは名前空間名 'ApplicationDbContext' が見つかりませんでした (using ディレクティブまたはアセンブリ参照がありませんか?)
2 番目のエラーが予想されますが、代わりにこのコード行で何を使用すればよいかわかりません。Entity Framework を使用せずにカスタム プロバイダーを実装した経験のある人はいますか?
ありがとう。
更新 1:
次のチュートリアル [ http://aspnetguru.com/customize-authentication-to-your-own-set-of-tables-in-asp-net-mvc-5/ ] を試しましたが、不完全なようです。チュートリアルを正確に実行すると、コンパイル エラーまたは実行時エラーが発生します。私がまだ抱えているいくつかの問題は...
「ApplicationUser」のすべてのインスタンスを「User」に置き換えると、IdentityConfig.cs の次の行に問題が発生します。
var manager = new ApplicationUserManager(new UserStore<ApplicationUser>(context.Get<MyDbContext>()));
ApplicationUser を User に変更すると、次のエラーが発生します
型 'WebApplicationTest2.Models.User' は、ジェネリック型またはメソッド 'Microsoft.AspNet.Identity.EntityFramework.UserStore' の型パラメーター 'TUser' として使用できません。「WebApplicationTest2.Models.User」から「Microsoft.AspNet.Identity.EntityFramework.IdentityUser」への暗黙的な参照変換はありません。
また、ユーザー マネージャーと多くの ASync メソッドの使用方法を理解するのにも苦労しています。次の行は機能しません。
AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = isPersistent }, await user.GenerateUserIdentityAsync(UserManager));
AccountController.cs で次のエラーが発生します。
'Microsoft.Owin.Security.IAuthenticationManager.SignIn(Microsoft.Owin.Security.AuthenticationProperties, params System.Security.Claims.ClaimsIdentity[])' に最も一致するオーバーロードされたメソッドには、いくつかの無効な引数があります。
'WebApplicationTest2.Models.User' には 'GenerateUserIdentityAsync' の定義が含まれておらず、タイプ 'WebApplicationTest2.Models.User' の最初の引数を受け入れる拡張メソッド 'GenerateUserIdentityAsync' が見つかりませんでした (using ディレクティブまたはアセンブリ参照がありませんか? ?)