問題タブ [asp.net-identity-2]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - MVC 5 Asp.Net ID 認証属性エラー
MVC アプリケーションを SimpleMembership から ASP.Net Identity 2.0 に移行し、後者のすべての参照をアプリケーションから削除しました。
しかし、コントローラーで authorize 属性を使用するたびに、SQLExpress データベース ファイルの自動作成エラーが発生します。(ところで、私はMs SQL 2012を使用していますが、他のすべての機能はEFでうまく機能しています)
私は次のすべてを試しましたが、どこが間違っているのかまだわかりません:
- とにかく、アプリとweb.configでSimpleMembershipの参照がないことを確認してください。WebMatrix 参照も削除しました。
- 私の起動時にfilters.Add(new AuthorizeAttribute())を追加 しました。
起動時に以下を追加
/li>私のコンテキストでConfiguration.ProxyCreationEnabledが見つかりません。つまり、デフォルトで遅延読み込みが有効になっています。
ログインコードに以下を追加しました:
/li>- はい - 役割は正しいケースで存在します。
asp.net - ASP.NET ID Web フォーム
わかった。Web フォームの asp.net ID で非常に奇妙なことが発生しています。web.config ファイルをセットアップして、ローカルの sqlexpress サーバーへの接続を確立します。以前にデータベースを作成し、asp.net ID と 4.5 .net フレームワークを使用する Web アプリケーションを実行しました。Web アプリを初めて実行したとき、SQL Server データベースにテーブルが自動的に作成されましたが、ソリューションの下の APP_DATA フォルダーに aspnetdb.mdf という名前で作成された別のデータベースがあることに気付きました。
接続文字列が何らかの理由で SQL サーバーに接続することを指摘しましたが、Web アプリは APP_DATA にある新しく作成された localdb データベースに接続します。
ここで何か間違ったことをしていますか?
ありがとう
c# - CreateIdentityAsync が FindByIdAsync を複数回呼び出す
独自のカスタム ストアで ASP.NET Identity 2.0 を使用しています。特にログイン時に、ストア操作が非効率的に複数回呼び出されることに気付きました。
これが私のサインイン コードです (ほとんどの場合、既定のテンプレートに含まれています)。
私のユーザーは次のように拡張されています:
認証の構成:
問題:
サインインすると、ユーザー
BaseApplicationUser user=await UserManager.FindAsync(model.Email,model.Password);
は絶対に正常な方法で取得されます。が
ClaimsIdentity userIdentity=await manager.CreateIdentityAsync(this,DefaultAuthenticationTypes.ApplicationCookie);
呼び出されると、BaseApplicationUser が渡されるためFindByIdAsync
、ユーザー ストアで 3 回 (!!!) 呼び出す必要はありません。これはばかげて次善です。実際、ユーザー オブジェクトは既に取得されているため、これを呼び出す必要もあります。
c# - UserManager.FindAsync が UserStore のカスタム実装で機能しない
私は ASP.NET Identity に比較的慣れていません。物事をよりよく理解するために、ASP.NET Identity のカスタム実装を行っています。カスタムコードを使用してユーザーを正常に作成できました。ただし、FindAsync(username, password)
機能は機能していません。
これが私がこれまでに行ったことです:
ユーザー:これは、User
から継承する私のクラスですIUser<int>
UserStore : これはカスタム実装ですIUserStore' and 'IUserPasswordStore
私のMVC5コントローラーには、ユーザー名とパスワードでユーザーを見つけようとする次の行があります。
上記のコード行は、次の のメソッドを順番に呼び出しますUserStore
。
public Task<User> FindByNameAsync(string userName)
と
public Task<string> GetPasswordHashAsync(User user)
。
その後、コードは永久に待機状態になり、何も起こりません。つまり、制御がコントローラーに再び返されることはありません。
ここで何が欠けていますか?
asp.net-mvc - Cookie を使用してサード パーティのログイン プロバイダーと Microsoft.AspNet.Identity.Owin 2.0 にサインインしたままにする
私が作成している単純な ASP.NET MVC SPA アプリケーションでいくつかのサード パーティのログイン プロバイダーを使用するために、このチュートリアルに従いました。構成は十分に単純で (私は実際に Twitter と Microsoft を有効にしました)、サインイン プロセスは正しく機能しますが、ユーザー資格情報はブラウザー セッション Cookie にのみ保存され、ブラウザー セッション間で保持されません。
また、NuGet のalpha-1 サンプル プロジェクトを使用してみましたが(同じ基本構成が適用されています)、これも機能しません (少なくとも私の環境では)。
Web アプリケーションはローカルでのみホストされます (テストする Azure アカウントがないため)。
設定が影響すると思いましたExpireTimeSpan
が、そうではありません:
Cookie (コードが実行されていることを検証するために、Cookie のデフォルト名を意図的に変更しました。デフォルトでは動作しません):
asp.net-mvc - シード済みのロールがありますが、Roles.GetAllRoles が機能しませんか?
SQL データベースのテーブル AspNetRoles にいくつかのロールをシードしました。ユーザーは AspNetUsers で見つかります。
また、多数の aspnet_ テーブルを見つけました (これらは古い WebForm のものだと思います)。ビュー内で、結果を返さない @Roles.GetAllRoles() を呼び出しています。aspnet_Roles テーブルにはレコードがありません。そこでチェックしているのかもしれません。しかし、シードされたロールが次のように作成されているため、それはありそうにありません。
MVC5 に関する私の知識がほとんどないため、 Roles.GetAllRoles() が正しい結果を返すことを示唆しています。
私はこの @model EUWebRole.Models.IdentityManager を使用しています ApplicationUser も試してみましたが、結果は変わりませんでした。
質問に:
1) ロールのリストを取得するにはどうすればよいですか? 2) 間違った「テーブル」を使用している場合、正しいテーブルを使用するように設定するにはどうすればよいですか?
どんなアイデアでも大歓迎です。