問題タブ [roleprovider]

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 投票する
1 に答える
245 参照

asp.net - Microsoft ロール プロバイダーを使用して、実行時にユーザーを「一時的に」ロールに追加することはできますか?

カスタム メンバーシップ プロバイダーとカスタム ロール プロバイダーを実装しています。正常に動作しています。すべてのユーザーとすべてのロールを含むカスタム データベースがあり、ほとんどのユーザーと役割の間の関連付け。誰がその役割を担っているかを把握するためのコードがはるかに複雑な役割がいくつかあります。これは、ユーザーごとに実行する必要があり、これらの他のロールのいずれかですべてのユーザーのリストを返す簡単な方法はありません。だから私がやろうとしているのは、実行時にユーザーをロールに追加することです。そのため、ユーザーがログインすると、ほとんどの役割がカスタム ロール プロバイダーから取得されます。ただし、ログイン時に追加のコードを実行して、これらの他の 2 つのロールの一部でもあるかどうかを確認したいと考えています。もしそうなら、セッションのために、これらの2つの役割を「一時的に」ユーザーに追加したいと思います。言い換えれば、自分のアプリケーションがそれらのロールの一部であることをアプリケーションに認識させたいのですが、プロバイダーがそれを基になるデータベースに保持しようとしないようにしたいと考えています。

私はこれについて正しく考えていますか?これは正しいアプローチですか?これはできますか?

これが不明確または意味をなさない場合はお知らせください。

ありがとう、コーリー

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

.net - カスタムロールプロバイダーの問題

このスタックトレースは、「プロバイダー名をnullまたは空にすることはできません」というエラーの結果として発生します。

[ArgumentException:プロバイダー名をnullまたは空にすることはできません。] System.Web.Security.Roles.Initialize()+2230205 System.Web.Security.RoleManagerModule.OnLeave(Object source、EventArgs eventArgs)+68 System.Web.SyncEventExecutionStep.System .Web.HttpApplication.IExecutionStep.Execute()+148 System.Web.HttpApplication.ExecuteStep(IExecutionStep step、Boolean&completedSynchronously)+75

基本的に、私はSqlRoleProviderクラスを継承する独自のカスタムロールプロバイダーを作成しています。initializeを正常に呼び出して、コード内のすべてを正常に実行することを確認しましたが、.Netの何かが「Roles」オブジェクトとして正しく初期化されていないことは明らかです。継承できないので頭痛がします...

何か案は?

私のソリューションは階層化されています。つまり、ビジネスオブジェクト層を通じてセキュリティを提供する必要があります...そのためには、次のように定義します。

---編集1---

私のコード:

メインアセンブリ:

プロバイダーアセンブリの場合:

この時点で、provで呼び出しを行うことで、基本クラス「RoleProvider」が定義するものをすべて使用できるようになると思います。..。

余分なコードを省略しましたが、基本的に、クラス「C20RoleProvider」のRoleProviderクラスから抽象としてマークされているすべてのメソッドがあります。

少し奇妙に見えることは知っていますが、私がやろうとしているのは、プロバイダーでのデータ取得からビジネスロジックを分離することです。データプロバイダーは(私のリフレクションコードを介して)ビジネスフレームワークで使用できるビジネスロジッククラス「C20RoleProvider」です。何かを壊すことを恐れずに、バックエンドソースの交換を可能にします(たとえば、役割データはどこからでも取得できます)。

ここではさらに多くのことが行われていますが、基本的に、アプリケーションフレームワーク/ビジネスオブジェクトレイヤー全体がこの方法でプロバイダーを使用して、任意のソースからコアビジネスロジックにデータを「提供」します。

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

asp.net - ネストされたグループ権限の処理 (ASP.NET ロール プロバイダー)

グループ/ロールのメンバーシップに基づいて、ASP.Net のリソースへのアクセス許可を制御するセキュリティ モジュールがあります。Active Directory にグループ メンバーシップを照会し、このモジュールで使用されるカスタム ASP.Net ロール プロバイダーを作成しました。

セキュリティ チェックは、リクエストごとに次のように機能します (パフォーマンス上の理由からキャッシングが使用されますが、このリストからは除外されます)。

  1. ユーザー グループ メンバーシップのリストについて AD にクエリを実行する
  2. 要求されたリソースへのアクセス権を持つユーザーとグループのリストをデータベースに照会します
  3. AD からの結果をデータベースからの結果と比較します。ユーザーが明示的に権限を持っている場合、またはユーザーが属するグループが権限を持っている場合はアクセスを許可し、そうでない場合は許可しません。

問題は、ネストされたグループがある場合に発生します。ParentGroupChildGroupの2 つのグループがあるとします。ここで、 ChildGroupは Active DirectoryのParentGroupのメンバーであり、ユーザーはChildGroupのメンバーです。上記のロジックに従って、ChildGroupにリソースへのアクセスを許可すると、ユーザーもリソースにアクセスできるようになります。

論理的には (とにかく私には) ParentGroupにリソースへのアクセスを許可すると、そのすべてのメンバー、および再帰的に取得されたサブグループとそのメンバーも、そのリソースにアクセスできるようになります。しかし、代わりに、私のロジックが機能する方法が原因で、リソースにアクセスできません。上記のリストのステップ 1 では ParentGroup が表示されず、 ChildGroupのみが表示され、ステップ 2 ではParentGroupのみが表示され、 ChildGroupは表示さません。

問題は、「論理的に」説明したように機能させるには、どこで問題を修正する必要があるか、別の方法よりもうまく機能する方法があるかどうかです。

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

asp.net - ASP.NET 認証を使用したコンソール アプリケーション

状況は次のとおりです。コンソール アプリケーションを 1 日に 1 回実行し、表示するために認証が必要なページにいくつかの要求を行う必要があります。ページは、非常に基本的な ASP.Net Web アプリケーションでホストされます。

したがって、リクエストが正常に処理されるためには、サーバーで認証する必要があることがわかっています。そこで、Web アプリに使用している ASP.Net メンバーシップ プロバイダーにコンソール アプリケーションを接続し、一連の資格情報が有効かどうかを正常に判断しました。ただし、Membership.ValidateUser() を呼び出した後、私が行ったリクエストはログイン画面を取得するだけです。いくつか読んだ後、これは、ログインまたはWhat-have-youを保持する重要なCookie情報が欠落しているためのようです.

基本的な WebClient を使用してリクエストを作成し、結果を読み取り/破棄しています。

したがって、質問の要点は次のとおりです。ログイン情報を検証して保持し、リクエストを正常に実行できるようにする簡単な方法はありますか、それとも、 login.aspx ページへの「手動」ログイン要求を作成し、そこから Cookie を保持しようとする WebClient はありますか?

私が参照している質問は次のとおりです。

WPF アプリケーションからの ASP.NET MVC ユーザーの認証

Web サイトにログインし、Cookie を使用して別のページのソースを取得する

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

asp.net - asp.net カスタム ロール プロバイダー nhibernate エラー

こんにちは、

nhibernate アプリケーションにカスタム ロール プロバイダーを実装しています。nhibernate セッションにアクセスするたびに呼び出すリポジトリがあります。

したがって、ロール プロバイダーが自身を初期化するとき

それから私はオーバーライドします

//その後、フィルタリングなどを行います

しかし、この関数が呼び出されると、NHibernate セッションが閉じられているというエラーが常に表示されます。nhibernate ソース コードをデバッグしたところ、ここでのセッションには、コントローラー内のセッションとは異なる GUID があることがわかりました (私は ASP.NET MVC も使用しています)。そして、この特定のセッションは、私がここに着くまでに終了しています。誰が閉めたのかわからない。アプリケーションの起動時にのみ開始されることを知っています。

誰かが私が間違っていることを知っていますか? このプロバイダーで引き続き Nhibernate を使用したいのですが、エラーは発生しません。ありがとうございました

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

c# - ASP.NET メンバーシップ プロバイダー クラスの使用方法

自分のデータベースに asp.net メンバーシップ プロバイダーを使用したい 自分のテーブルがある

これが私が行ったこと です。メンバーシッププロバイダークラスを、独自の write all オーバーライドされたメソッドで拡張しました。 カスタム使用のためにメンバーシッププロバイダークラスを使用するのは正しい方法ですか?? 私も役割管理クラスを拡張します。

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

asp.net-mvc-2 - ASP.NET MVC、2 人のユーザーに 1 つのロール、各ユーザーの動作が少し異なる

カスタム roleprovider を実装しました。これにより、ロールを使用してサイトの一部へのアクセスを制限できます。ここで、2 人のユーザーが管理者ロールを持っている場合があります。ただし、user1 はコメントを追加でき、user2 はコメントを追加できません (user1 と user2 は管理者ロールを持っています)。


この問題を解決する最良の方法は何ですか?

Administrator.AddComment のようなロールを追加して、コントローラー アクションに入れることはできますか?

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

asp.net - ASP.NET ロール プロバイダー: SQL Express の代わりに SQL Server を使用していますか?

フル SQL Server 2005 をロール プロバイダのデータ ストアとして使用したいと考えています。

ウィザードを使用して aspnetdb をインストールしました。

私のアプリケーションでは、次の接続文字列を追加しました

次に、ロール プロバイダーを次のように構成しました。

次のようにプログラムでロールを作成します。

しかし、SQL 管理スタジオから aspnetdb を確認すると、テーブルaspnet_Rolesにレコードがなく、ロールが挿入されていないことがわかりました。

これらの手順に問題があるか、何か不足していますか?

ありがとう

0 投票する
4 に答える
661 参照

c# - Roles.GetUsersInRole または別のものを使用して、特定の役割に属していないすべてのユーザーを検索します。

特定のロールに存在しないユーザーのリストを配列に入力し、結果をカウントする必要があります。

現時点ではこのコードを使用していますが、「CMS-ADMINISTRATOR」ロール外のユーザーを取得できません。

それを行う方法とカウントセクションをより適切に記述する方法はありますか?

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

asp.net - VS2010 での ASP.NET ユーザー/ロール管理 - SQL Express バージョンをスキップして、SQL Server 2008 R2 に直行

ASP.NET ユーザー管理の詳細を学習していると、VS の既定では、保存する必要があるデータにSQL Server Express .mdfファイルを使用することがわかってきました。IIS 7.5 サーバーで SQL Server 2008 R2 を実行しているため、これはサイトを展開するときに役に立ちません。コマンド ライン ツールを実行して、ユーザー管理に必要な db テーブルを自動的に作成できることはわかっていますが、開発マシンでそれを実行しますが、VS の既存の開発コードに、既存の Express .mdf を無視するように指示するにはどうすればよいですか?ファイルを開き、新しく作成された db テーブルを見てください。