ヤマムギ

growing hard days.

*

WordPressにログインを強制して記事ごとのアクセス制限もする

      2018/11/24

WordPressを限定された組織内で使いたいとした場合に下記を実現したいと思いました。

  • ページごとに閲覧権限を設定したい。
  • ユーザ発行していない人にはアクセスさせたくない。
  • GoogleAppsとかでログイン制限するという前提でログイン出来る環境はGoogleAppsに依存したい。

wordpress-ap-security

ページごとに閲覧権限を設定する

User Role Ediotrプラグイン をインストールして設定する

ユーザーに紐付けるロール情報を作成するのに必要です。

wp-login-1

インストールすると[ユーザー]に[User Role Editor]メニューが増えているので、そこで任意のユーザーロールを作成する。
デフォルトのロール(投稿者)などがあるのでそこからコピーすると簡単です。

User Access Managerプラグイン をインストールして設定する

記事に紐付けるグループ情報を作成してロールと紐付けるのに必要です。

wp-login-2

インストールすると[UAM]メニューが増えるので、[Manage user user groups]で新しいグループを作成して、先ほど作成したロールを設定します。

グループとロールをユーザーに設定する

ユーザーの編集モードで作成したロールとグループを設定します。

記事を投稿するときには、右下に[Access]という設定領域が出来ているのでそこで閲覧可能なグループを設定します。

GoogleAppsのログイン認証を使いたい

GoogleCodeでClient ID とClient Secretを発行する

GoogleApps管理者で https://cloud.google.com/console にアクセス

Google_Developers_Console-1

[プロジェクトを作成]で新規プロジェクトを作成し、任意のプロジェクト名を設定します。

Google_Developers_Console-2

[APIと認証]-[認証情報]で[OAuth]-[新しいクライアントIDを作成]を押します。

Google_Developers_Console-3

[ウェブアプリケーション]を選択して[同意画面を設定]を押します。

Google_Developers_Console-4

[メールアドレス]を選択して[サービス名]を任意に設定して[保存]を押します。

Google_Developers_Console-5

[承認済みのJAVASCRIPT生成元]にWordpressサーバーのドメインまでを設定します。
サブフォルダがあってもドメインまででいいです。

[リダイレクトURI]はサブフォルダも含むWordPressのパスに wp-login.php を加えたものを設定します。

例:
– [承認済みのJAVASCRIPT生成元] http://yourdomain.com/
– [リダイレクトURI] http://yourdomain.com/wordpress/wp-login.php

Google_Developers_Console-6

クライアントIDが生成されるのでクライアントIDとクライアントシークレットをコピーしておきます。

Google Apps Loginプラグインをインストールして設定する

[設定]-[Google Apps Login]でClient IDとClient Secretを入力して[Save Changes]を押します。

これでログイン画面に[Login With Google]ボタンが表示されます。

ユーザーを作成する際に、ユーザー名を@より前のアカウント部分にしておき、メールアドレスをGoogleAppsのメールアドレスにしておきます。

そしてここが重要なのですが、パスワードは適当に複雑な高度なパスワードを設定してユーザーには教えない運用にします。

これで、ユーザーは[Login With Google]ボタンしか使えなくなるので、GoogleAppsにログイン出来ない環境では使えない、と出来ます。

ページアクセスの際にログインを強制する

記事のURLやリンクをアナウンスする際にその度に、wp-login.phpでログインしてから見てください、なんで面倒な事もしてられません。

なので、ページアクセスの際にログインしていなければ自動的にログインページにリダイレクトされてログイン後は目的ページへリダイレクトされるようにします。

heder.phpにauth_redirect()関数を追加する

[php]
if (!is_user_logged_in()) {
auth_redirect();
}
[/php]

PHPタグとともに上記を追加。
追加する場所はとにかく一番上に追加しました。


最後までお読みいただきましてありがとうございました!

「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。

「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。

「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。

「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。

「AWSではじめるLinux入門ガイド」という本を書きました。

 - PHP, Web, WordPress , ,

ad

ad

  関連記事

執筆などで使えるグローバルIPアドレス

今さらなんですが、執筆などで使えるグローバルIPアドレスを調べました。 RFC5 …

Nephila ClavataでWordPressの画像をS3から配信する

当ブログサイトはAWS EC2とRDS上でWordPressを構築しているのです …

Google Apps ScriptでAdmin SDK Directory Serviceを使ってユーザの最終ログイン情報一覧を出力する

GoogleAppsで使わなくなったアカウントを確認する方法として、最終ログイン …

EC2 Amazon LinuxのNginx+RDS MySQLにレンタルWebサーバーからWordPressを移設する(手順整理版)

ブログサイト(WordPress)をレンタルWebサーバーからAWSに移設する事 …

ホームページ、自作サイトにアメブロの新着情報を掲載する

MagipieRSSを使用 なので下記サイトでダウンロード http://mag …

WordPressの目次を自動生成(Easy Table Contents)

ホール・パート・ホール、大切ですよね。 長いブログでは、この記事に何が書かれてい …

スパムリファラーサイトのアクセスをAnalyticsで除外する(2017/8/17現在)

アクセス数とかそんなに気にしないのですが。 嘘です。 リファラーサイトからのアク …

ライブ配信のカレンダーをGoogle Apps Scriptとかで作りました

ライブ配信がまとまっているカレンダー欲しいなあと思いまして。 まとめようと思いま …

Mac OS X Yosemite にnode.js + mongodb 環境を作る

node.jsインストール nodejs.orgサイトで「INSTALL」ボタン …

Googleカレンダーの予定をPHPからXMLで取得してWebページに表示する(現在廃止されたAPIなので使えません)

ご注意 ※下記の記事で使用していたAPIは2016年現在使用出来なくなっています …