問題タブ [user-permissions]
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.
oop - ユーザーアクセス/権限クラスの設計
私はサイトで作業しています。このサイトには、特定のユーザーが完全に利用できるモジュール、他のユーザーが半利用できるモジュール、残りのユーザーが利用できないモジュールがあります。
例えば:
「従業員」は、自分に割り当てられたカスタマーサポートチケットに応答できます。
「マネージャー」は、特定の従業員のチケットの表示を含め、すべての従業員を管理し、チーム内のチケットをサポートすることができます。
「管理者」は、すべてのチームのすべてのマネージャー、従業員、チケット、およびその他のコア機能を管理できます。
さらに、一部のページには、現在のユーザーが管理者または管理者である場合に表示される追加のフィールドがいくつかあります。(たとえば、削除/フラグを立てるためのリンク)。これらは従業員には表示されません。
次のロジックを処理する「パーミッション」モデルを1つ作成したいと思います。
ユーザーが現在のページにアクセスできるかどうかを判断します。
ページの特定の部分を表示するかどうかを決定します。(たとえば、管理者と管理者にのみ表示される編集/削除用の特別なリンク)。
このクラスを設計するためのいくつかの推奨事項/アドバイス、特に2番目の要件を達成するために必要なメソッドが必要です。
php - 複数レベルのユーザー権限システムの設計
ツリーのようなデータベース スキーマを持つサイトで作業しています。上から下に私は持っています:
- 1 つの会社は複数の会社を持つことができます
- 多くの場所を持つことができる場所
- 多く持つことができるフリート
- 乗り物
ユーザー許可システムは、誰かがツリーのどのレベルでもアクセスを取得または制限できるという点で柔軟でなければなりません。たとえば、場所 x を管理する人は、デフォルトで、場所 x の下にあるすべてのフリートと場所 x の下にあるすべての車両に完全にアクセスできます。しかし、場所 x の下のノードへのユーザーのアクセスを制限することもできるはずです。
このような許可システムのスキーマを開発する適切な方法は何でしょうか? ユーザーがアクセスできる各ノードを格納することは、たとえ冗長であっても現実的でしょうか? 目標は、クエリを簡単に実行して、たとえばユーザーがアクセスできるすべての場所を取得できるようにすることです。
mysql - MySQL は、1 つのテーブルを除くすべての権限をデータベースに付与します
以下を達成するための合理的な解決策を見つけることができませんでした:
SELECT 権限のみを持つ 1 つのテーブルを除いて、データベース (または同じスキーマを持つ一連のデータベース) に対するすべての権限を持つユーザーが必要です。
基本的に、ユーザーがデータベースを自由に管理できるようにしたいのですが、特定のテーブルを更新できないようにしたいと考えています。
これまでのところ、私は試してみましたが、役に立ちませんでした:
そのデータベース(db_name.*)に対するすべての権限を付与し、次に、その目的のテーブルに対する選択権限のみを明確に付与します(「すべて」を上書きすることを望んでいます、ばかげています)。
そのデータベース (db_name.*) に対するすべての特権を付与してから、挿入、更新、および削除を取り消します。しかし、これにより、db_name.table_name に対する付与ルールがないというエラーが発生しました。
私が収集できたものから、読み取り専用テーブルを除くデータベースの各テーブルに対するすべての権限を個別に付与する必要があります。
もっと簡単な方法があると誰か教えてください
注:MySQL 5.1を実行しています。Ubuntu 10.04 で利用可能な最新のもの。
salesforce - Salesforce: 現在のユーザーが現在のレコードを更新する権限を持っている場合にのみ頂点をレンダリングする方法。記録レベルのセキュリティ
この質問に投稿されたコードを修正しようとしています
その投稿でわかるように、Case のタブ付きコンテンツを含む Visualforce ページのカスタム コントローラーがあります。CaseComments を一覧表示する唯一の方法は、カスタム Apex を使用することです。コントローラーは単純なクエリを実行して、現在のケースのすべての CaseComments を取得します。
現在のユーザーが特定のケース コメントのインスタンスを編集する権限を持っている場合にのみ、「編集」リンクを表示したいと考えています。
ここで、オブジェクト レベルのセキュリティに基づいてコンポーネントを動的にレンダリングすることについての良いブログを見つけました: http://forcearchitects.deliveredinnovation.com/2011/02/05/render-visualforce-components-dynamically-based-on-object-level-security/
その投稿に基づいて、私は使用してみました
次のように:
残念ながら、updateable のテストはオブジェクト レベルで行われるため、現在のユーザーが任意の CaseComment を編集する権限を持っている場合、すべての CaseComments で true が返されます。
現在のユーザーが特定の行を変更できる場合にのみ編集アクションを表示するには、レコード レベルの検証が必要です。
何か案は?
更新 質問を読み直したところ、本来あるべきほど明確ではなかったことがわかりました。
CaseComments のセットを反復処理するとき、特定の Case について、現在のユーザーが「権限のないページ」を表示せずに特定の CaseComment を安全に編集できるかどうかを知る必要があります。このテストは、CaseComment ごとに CaseComment レコード レベルで行う必要があります。これは、特定の Case には、すべてが異なるユーザーによって提供された多数の CaseComment があるためです。
svn - MacOS Xのsvnリポジトリのフォルダに異なるユーザー権限(誰が許可されているか、誰が許可されていないか)を持つことは可能ですか?
同じsvnリポジトリ内の異なるプロジェクトで複数の開発者が作業しているので、間違ったプロジェクトにアクセスしてほしくない。
複数のリポジトリがあるとうまくいくと思いましたが、今はよくわかりません。Webで検索しようとしても、特定のアカウントのみが特定のアカウントにアクセスできるようにsvn / apacheを構成する方法や、可能かどうかはわかりません。リポジトリ。
Mac OS XでSubversionを使用して、この基本レベルのセキュリティを実現する方法はありますか?
これにhtpasswordを使用する方法はありますか?
よろしくお願いします。
asp.net - データをロードするためのメソッドに再利用可能な ASP.NET WebControl を接続します。
ユーザーのアクセス許可に基づいて、他の Web コントロールを拡張し、visible や enabled などのプロパティを設定できるコントロールを作成しようとしています。
ユーザー ロールに「CanSave」権限を含める必要がある例を次に示します。
私はこれを再利用できるようにしようとしています。そのため、PermissionExtender は別のプロジェクトにあり、他のプロジェクトに依存することはできません。決定を下すには、もちろん、コントロールはこの情報をどこか (データベースなど) から取得する必要があります。私は別のコントロールを作成し、イベントを使用して、上記のエクステンダーはマスター コントロールによって設定されるため、情報を検索する場所を知る必要があるのはそれだけです。
マスター コントロールは、ロールとアクセス許可に関する情報がどこから来るのかを知るように構成する必要があります。私の考えは、再利用可能なプロジェクト内にインターフェースを持ち、それを別の場所に実装してから、必要なメソッドを実装するクラスを見つけてリフレクションを介してロードするようにコントロールを構成することでした。しかし、これがどのように機能するかは不明です。おそらくマスター コントロールをマスター ページに配置し、PermissionClass="SecurityLibrary.PermissionsClass" のようなクラス名を指定します。ObjectDatasource のようなものですが、他の提案は大歓迎です。
メソッドのシグネチャは次のようになります。
bool HasPermission(string permission)
現在のユーザーの役割を認識し、その組み合わせを使用して、役割に権限が含まれているかどうかを調べます。
コントロールから、必要な情報を依存せずに提供できるメイン プロジェクト内のメソッドへの呼び出しを接続するにはどうすればよいですか。
asp.net-mvc - SOのようなレピュテーションベースのユーザー権限を実装する方法は?
この質問はMetaSOにあるべきだと思うかもしれませんが、そうではありません。基本的にASP.Net MVCに関するものですが、実装したい手法はすでにSOに実装されているからです。
StackOverflowの場合と同じように、ユーザーがより多くの評判を得ながらパワーを発揮できるようにしたいのですが、私の質問は、ユーザー認証システムをどのように設計するかです。組み込みのフォーム認証に頼ることはできますか?また、ユーザーに表示されるリンク(レピュテーションに応じて)と表示されないリンクを管理する方法は?
ここではロールを使用できないと思うので、1000のロールになってしまうことはありませんよね?ただし、2つの役割(管理者、ユーザー)のみを使用できます。
[編集]:
フォーム認証に依存するよりも、独自のユーザーテーブルを作成する方が良いと思います。そのため、レピュテーションフィールド(およびその他のフィールド)をユーザーテーブルに追加して、あなたが言ったように追跡できます。if
ところで@MartinHN、あなたが話していたことは知っていますが、私の質問は、そのような問題を処理するためのよりスマートな方法がありますか?
facebook - Facebook オフライン アクセス キー/ログインの問題
ユーザーが私のアプリに初めてアクセスするとき、私はいくつかの許可を求めます ( user_checkins
、publish_stream
、offline_access
)。すべての権限を許可した後、ユーザーはプライバシー設定に移動し、最初の 2 つの設定のいずれかを削除します ( ではありませんoffline_access
)。Facebook は、ユーザーがログアウトしてアプリケーションに戻ったとしても、削除されたアクセス許可を元に戻すように求めません。
アクセストークンが更新されていないため、オフラインアクセス許可を要求し始めたときに問題が発生しました。トークンにはまだ許可が含まれています。
適切な権限を持つユーザーの新しいトークンを要求するにはどうすればよいですか?
php - mysql データベースの変更を確認する PHP スクリプト
Web サーバーに写真アプリ (ZenPhoto) をインストールしようとしていますが、インストーラーから次のようなメッセージが表示されます。
ホストのコントロール パネルには、次のデータベース ユーザー権限のみが表示されます。
INDEX と ALTER が欠落しているのでしょうか。インストールを完了できましたが、問題が発生する可能性があるかどうかを知りたいですか? データベースを変更できるかどうかを確認するために使用できる PHP / mySQL 関数はありますか?
ruby-on-rails - 多くのユーザーを持つRails 3の企業アカウント、データへのアクセスを制限
アプリで認証/承認を構成する最良の方法について疑問に思っています。したい
サブドメインを使用している可能性がある、多くの企業アカウント
アカウントには多くのユーザーがいます
また、ユーザーは自分自身または同じアカウントを持つ別のユーザーによって作成されたレコードにのみアクセスできます。
私が行った調査では、devise / cancan / authlogic を奇妙で素晴らしい方法で組み合わせるための多くの組み合わせのアイデアが提供されていますが、同じ内のデータへのユーザー アクセスを制限する最良の方法を示すものはまだ見つかりません。モデル。
たとえば、次のようになります。
アカウント 1: ユーラシア
ユーザー 1: ボブ
ユーザー 2: ジム
アカウント 2: イースタシア
ユーザー 1: デイブ
ユーザー 2: アラン
Isbn 1: account_id は 1
Isbn 2: account_id は 2
Bob が Isbn 2 にアクセスしたり、クラッドできないようにするにはどうすればよいですか?
///更新もちろん、これを投稿したところ、Google fu が起動し、RyanB からCanCan 2.0の readme を見つけました。これは完璧に思えます:
> リソース
モデルの属性に基づいて承認を変更する必要がある場合はどうすればよいでしょうか? これを行うには、can の最後の引数として条件のハッシュを渡します。たとえば、自分が所有するプロジェクトへのアクセスを 1 人だけに許可したい場合は、:user_id オプションを設定できます。