問題タブ [simplemembership]

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.

0 投票する
3 に答える
6703 参照

asp.net-mvc - ユーザーとロールをシードできません

ユーザーとロールをデータベースにシードしようとしています。現在、C# MVC4 の自動移行で Code First Entity Framework を使用しています。私が電話するたびに

更新データベース -強制

次のエラーが表示されます。

シード メソッドを実行します。System.InvalidOperationException: 「WebSecurity」クラスの他のメソッドを呼び出す前に、「WebSecurity.InitializeDatabaseConnection」メソッドを呼び出す必要があります。この呼び出しは、サイトのルートにある _AppStart.cshtml ファイルに配置する必要があります。WebMatrix.WebData.SimpleRoleProvider.get_PreviousProvider() で WebMatrix.WebData.SimpleRoleProvider.RoleExists(String roleName) で System.Web.Security.Roles.RoleExists(String roleName) で GratifyGaming.Domain.Migrations.Configuration.Seed(GratifyGamingContext コンテキスト) C:\Users\Unreal\Documents\Visual Studio 2010\Projects\GratifyGaming\GratifyGaming.Domain\Migrations\Configuration.cs: System.Data.Entity.Migrations.DbMigrationsConfiguration の 36 行目1.OnSeed(DbContext context) at System.Data.Entity.Migrations.DbMigrator.SeedDatabase() at System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.SeedDatabase() at System.Data.Entity.Migrations.DbMigrator.Upgrade(IEnumerableSystem.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.Upgrade(IEnumerable`1 pendingMigrations、文字列 targetMigrationId、文字列 lastMigrationId) で System.Data.Entity.Migrations.DbMigrator.Update(文字列 targetMigration) で 1 pendingMigrations、文字列 targetMigrationId、文字列 lastMigrationId) ) System.Data.Entity.Migrations.Infrastructure.MigratorBase.Update(String targetMigration) で System.Data.Entity.Migrations.Design.ToolingFacade.UpdateRunner.RunCore() で System.Data.Entity.Migrations.Design.ToolingFacade で。 BaseRunner.Run() 「WebSecurity」クラスの他のメソッドを呼び出す前に、「WebSecurity.InitializeDatabaseConnection」メソッドを呼び出す必要があります。この呼び出しは、サイトのルートにある _AppStart.cshtml ファイルに配置する必要があります。

問題のあるコード行はRole.Exists

WebSecurity.InitializeDatabaseConnection を Global.asax、Seed() に配置しようとしましたが、成功せずに _AppStart.cshtml を作成しました。私は可能な解決策を探してインターネットをトロールしましたが、どれもうまくいきませんでした(他のスタックオーバーフローの記事を含む)。いくつかの注目すべきブログ投稿を以下に示します。

以下のコードを参照してください。

[構成.cs]

Criterion シード コードは確実に機能します。

[_AppStart.cshtml]

私のサイトへの通常のログインは、ここにあるこれで完全に機能します。

[web.config]

[AccountModel.cs]


アップデート

WebSecurity.InitializeDatabaseConnection は実行されていないと思います.Seed メソッドに複数配置できますが、通常発生する「一度だけ呼び出すことができます」というエラーは発生しません。

私のシード メソッドはすべてのモデルと共に私のドメイン プロジェクトにあり、他のすべては WebUI プロジェクトにあります。これが何か関係があるかどうかはわかりません。

0 投票する
2 に答える
223 参照

asp.net - SimpleMembershipProviderがデータベースにテーブルを追加しない

標準のASP.NETMVC4アプリケーションがあり、EFコードファーストを使用してDALを構築しています。現在、20〜30のモデルがあり、ユーザーとロールを統合したいと思っています。私はこれを1トン研究しましたが、それでも機能させることができないようです。これが私が今持っているものです:

私のデータベース初期化クラス(モデルを変更するたびに呼び出されます)で、大量のデータをシードしてから、次のように呼び出します。

デバッグにより、エラーはスローされず、このコード行にヒットしていることを確認できます。私のユーザーモデルは次のようになります。

私が読んだすべてのことから、これを機能させるために必要なことはこれだけだと思いましたが、2つの問題があります。

  1. メンバーシップテーブルはロードされていません

  2. WebMatrix.WebData dllを参照しているのに、Configがエラーをスローしているようです

設定セクションは次のとおりです。

ここで何が欠けていますか?

0 投票する
1 に答える
407 参照

asp.net-mvc - Asp.NetMVC4でSimpleMembershipを使用してフォルダーを保護する

ASP.NETMVC4プロジェクトでSimpleMembershipプロバイダーを使用しています。web.configの次のコードが、許可されていないユーザーからフォルダーのコンテンツを保護しないのはなぜですか?

0 投票する
0 に答える
159 参照

asp.net-mvc - .Net SimpleMembership UserProfile テーブル インデックスの最適化

私は .Net Simple Membership を使用しており、SQL DB にテーブルを作成しました。
次のコマンドで構築された UserProfiles テーブルに気付きました

UserId 列のみにインデックスがあります。UserName にも制約/インデックスがあるべきではありませんか?

ログインコマンド

UserName のみを認識しているように見えるため、ユーザーを取得するためにテーブル スキャンを実行します。

ここで何か不足していますか?

ありがとう

0 投票する
6 に答える
2691 参照

asp.net-mvc-4 - .NETMVC4SimpleMembershipエラー-「xxxという名前のユーザーが見つかりませんでした」

.NETMVC4プロジェクトでSimpleMembershipを使用しています。開発中に、データベースを手動で操作/再構築しているときに、本番環境では起こりそうもないエラーに遭遇しましたが、これを解決したいので、適切な処理方法を見つけることができません。

アプリケーションにログインした後、データベースでユーザー名が変更された場合、またはユーザーレコードが完全に削除された場合、ユーザーはアプリケーションのどのページにもアクセスできなくなります...匿名ビューを許可する公開ページを含むログイン画面。代わりに、例外がスローされます-「'us​​ername'という名前のユーザーが見つかりませんでした」。

私のアプリケーションのすべてのページは、ログイン/ログオフコントロールをレンダリングする部分的なビューを表示します。Request.IsAuthenticatedは、データベースの内容に関係なくtrueを返します。アプリは、Cookie内の情報に基づいてユーザーがまだログインしていると見なしているようですが、対応するレコードがデータベースに見つかりません。認証Cookieをクリアするとこれは解決しますが、これは、これを経験している可能性のあるユーザーに提供したい指示ではありません。

私の現在の解決策は、Global.asaxでその例外をキャッチし、Cookieをクリアして、ログインページにリダイレクトすることです。これは私には完全にハッキーに思えます。

誰かがこのシナリオに対するより良い解決策を持っていますか?古い.NETメンバーシッププロバイダーを使用してこのような問題に遭遇したことはありません...この状況は箱から出してすぐにカバーされるべきであり、それを説明する必要はないはずです...レコードが変更された場合DBで/deletedされた場合、ユーザーは認証に失敗し、自動的にログインページにリダイレクトされます。

0 投票する
1 に答える
1543 参照

wcf - Roles.IsUserInRole() が wsHttpBinding と MVC 4 を使用して WCF で機能しない

次のテスト設定があり、すべて機能しています。

-MathService.svc を実行する WCF アプリケーション、SimpleMembershipProvider を使用するためのセットアップ

-デフォルトの SimpleMembershipProvider を使用する MVC 4 インターネット アプリ

- メンバーシップは次のとおりです。

  • 3 つの役割: 「デバッグ」、「管理者」、「編集者」
  • 2 ユーザー: ロール デバッグおよび管理者の「デバッグ」(ya、ロール デバッグのユーザー デバッグ)
  • ロール管理者の「管理者」

-証​​明書、機能しているとわかる限り、wshttpを使用してサービスに接続できます

サービス方法コード。

「Roles.GetRolesForUser(cltName)」および IsUserInRole の呼び出しが失敗するのはなぜですか?

「ServiceSecurityContext」から正しいユーザー名を取得します。[PrincipalPermission] 属性を有効にすると、ユーザー Admin でサービスを呼び出すと、予想どおり拒否されます。

では、なぜ PrincipalPermission は正しいユーザー ロールを取得できるのでしょうか? Roles.GetUsersInRole("Debug") を使用して正しいユーザーをすべて取得できるのに、Roles.IsUserInRole(..) を呼び出せないのはなぜですか?

証明書 / /membership のセットアップ エラーを示唆する投稿がいくつかありますが、これまでにどのように取得でき、セットアップが間違っているのかわかりません。何よりも、すべてではなく、一部のロール メソッドが失敗するだけです。ポインタはありますか?

返された結果について一言。ロールの回避策を使用してデバッグ経由で呼び出すと、サービスは倍精度を返します。管理者 [PrincipalPermission] を無効にして呼び出すと、整数精度が返されます。

よろしく、 アンドレアス

0 投票する
1 に答える
4763 参照

asp.net-mvc-4 - UserIdをUser.Identityに保持できますか?MVC4 SimpleMembership

SimpleMembershipがUserIdをどこかに保持するのか、そうでない場合は、派生データを保持するように強制するのか疑問に思います。

私には簡単な行動があります:

そして私のMiniProfilerは言います:

したがって、UserIdのクエリを複製しました。最初にロールを取得し、次に。を呼び出しWebSecurity.GetUserId(User.Identity.Name);ます。[承認]を呼び出した後、UserIdをどこかに保存するスマートな方法はありますか?

0 投票する
1 に答える
950 参照

asp.net-mvc - MVC 4で役割が初期化されるのはいつですか?ログインに成功した後ではありません

いくつかの役割ベースの依存関係(Ioc、Ninject)を設定したい。ただし、ログインが成功した後、ユーザーの役割は不明です。注射をいつどこで行うか?ロールの初期化を強制できますか?または、自分で取得する必要がありますか?

アプリケーションはHomeContoller(ロールセットなし)で始まり、ログインに成功すると、アプリケーションはde HomeControllerにリダイレクトされ(上記の標準コードを参照)、ロールが設定されます... 1つのトリックは、ロールを強制的に初期化することです。すべての役割または追加の「共通」役割を追加することによるHomeController

ただし、これによりログインが強制され、HomeControllerも開始点として強制されます。うまくいけば、私のDoRolebasedObjectBindingを呼び出すための「エレガントな」場所です。

0 投票する
0 に答える
143 参照

asp.net-mvc - SimpleMembershipProvider (エンティティ) にカスタム ユーザー アカウントを管理させる必要がありますか?

設定

そのため、特に WebMatrix.WebData.Websecurity を介して、ASP.net MVC (具体的には 4.5) で新しいシンプル メンバーシップ/ロール プロバイダーを使用しようとしています。

プロバイダー機能を利用して、プロバイダーをカスタム ユーザー テーブルにポイントしました。

また、選択した ORM として NHibernate を使用しています。

問題

上記のセットアップでは、単純なプロバイダーがユーザー アカウントを作成するために使用するエンティティ フレームワークを許可し、作成後に (NHibernate を使用して) ユーザー アカウントをロードして、追加データで更新するように制限する必要があるように思われます。

これは正しいです?

ノート

はい、この質問は、単純な .NET メンバーシップ プロバイダーまたは任意の .NET メンバーシップ プロバイダーに基づいてカスタム プロバイダーを作成しようとしていないことに基づいています。

0 投票する
3 に答える
6174 参照

asp.net-mvc - シンプルなメンバーシップ WebSecurity.CreateUserAndAccount が重複した UserId エラーを与える

MVC 4 の使用、Simplemembership

企業で使用する Web アプリケーションを構築しているため、すぐに使える MVC 4 テンプレート機能を使用してユーザーが登録できるようにしたくありません。代わりに、管理者のみがアクセスしてユーザーを作成できる [ユーザーの作成] ビューが必要です。登録コントローラーのセキュリティを変更して、現在ログインしているユーザーに既存の登録ビューを使用してユーザーを作成させることができることを望んでいました...サイコロはありません。

これがコントローラーのコードです。テンプレートから変更していません:

現在ログインしているユーザーがこれを介して新しいユーザーを作成しようとすると、エラーが発生します (@ 行 86):

Hwre は UserProfile クラスです

WebSecurity.CurrentUserID には、現在ログインしているユーザーが入力されています。これが問題の原因であると思います。simplemembership プロバイダーを使用してこれを達成する正しい方法は何ですか?

編集:これを匿名ユーザーの登録を許可するように戻そうとしたので、デバッグ時に WebSecurity.CurrentUserID が -1 になり、それでも同じエラーが発生します。クラスの UserId フィールドが属性 [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] で装飾されている場合、重複キーがどのように生成されるのでしょうか?