1

以下を含むすべてのページに同じヘッダーを使用します。

  • ユーザー認証コード、
  • ロゴとメインメニューのhtml、
  • ログイン情報(ユーザー名、ログアウトボタン/ログインしていないときのログイン登録ボタン)。

今質問に。

ページが公開されている (未登録ユーザーがアクセスできる) かどうかを確認する方法は? 普段は未登録ユーザーをログインページにリダイレクトさせていたのですが、公開しているページと公開していないページがある場合、どのように対処すればよいのでしょうか? ヘッダーはページに依存しないため、明らかに使用できません。公開条件をすべてのページに掲載することは良い考えですか?

4

3 に答える 3

0

これを解決する方法は、認証レイヤーを遅延読み込みすることです。これは、ユーザーがサインインしているかどうかを判断するためにセッションを使用するユーティリティクラスです(デフォルトではsession_xyz()関数とを使用します)。$_SESSION

現在サインインしているユーザーの知識が必要なページの上部には、次のコードがあります。

$user = SiteConfig::getSharedAuth()->ensureLoggedIn();

そのコード行は、常に現在サインインしているユーザーを返す認証オブジェクトを遅延ロードします。これを行うために、オブジェクトコードは次の手順を実行します。

  1. セッションを再開する
  2. セッションを再開できる場合は、でユーザーオブジェクトを見つけます$_SESSION['_user']
  3. ユーザーオブジェクトが見つかった場合は、それを返します
  4. ユーザーオブジェクトが見つからない場合は、現在のパスをセッションに保存し、にリダイレクトします/login
  5. ログインが完了したら、ユーザーオブジェクトをセッションに保存し、保存されたパスにリダイレクトします
  6. 手順1に戻ります。

したがって、結論として、特に明記されていない限り、ページはデフォルトで公開されています:)

于 2012-08-28T15:41:05.327 に答える
0

各ページが公開か非公開かをファイルまたはデータベースに保存する必要があります。そうでなければ、それが公開ページか非公開ページかをどのように知ることができますか? このタイプの設定をハードコーディングしないように、データベースでこれを行うことをお勧めします。将来ページを変更したい場合は、バックエンドにログインして変更するだけです。

于 2012-08-28T15:21:27.940 に答える
0

Access Control List の略であるACLを実装したいとします。

アクセス制御リスト (ACL) は、コンピューター ファイル システムに関して、オブジェクトに関連付けられたアクセス許可のリストです。ACL は、オブジェクトへのアクセスを許可されるユーザーまたはシステム プロセスと、特定のオブジェクトに対して許可される操作を指定します。一般的な ACL の各エントリは、サブジェクトと操作を指定します。たとえば、ファイルに (Alice, delete) を含む ACL がある場合、これにより Alice にファイルを削除する権限が与えられます。

アプリケーションでルーティングを処理する方法については触れていませんが、概念の簡単な説明については以下の記事を参照してください。

PHP でのカスタム ACL の作成

または役割ベースのアクセス制御について読んでください:

役割ベースのアクセス制御

于 2012-08-28T15:31:28.200 に答える