仕組み
通常のWebページID&Passによるログイン画面を設けることができます。Webページに認証がないと①に飛ばされログイン画面表示されます。
① login.html(UserID&Password入力画面)
② dologin.html(Apache内で認証作業)
③ htmlで書かれたWebページ群(認証がない場合は①へ移る)
④ dologout.html(Apache内で認証解除作業)
⑤ logout.html(終了画面)
ID登録
htpasswdコマンドでパスワードファイルをを作成します。
-c 最初にパスワードファイルを作るときに指定します。
-b コマンドラインでパスワードも指定する。
htpasswd -c -b ~/public_html/.htpasswd User1 Password1 htpasswd -b ~/public_html/.htpasswd User2 Password2
~/public_html/.htaccessの設定
<Files "dologin.html"> SetHandler form-login-handler AuthFormLoginSuccessLocation /~user/ok.html SessionMaxAge 600 </Files> <Files "dologout.html"> SetHandler form-logout-handler AuthFormLogoutLocation "/~user/logout.html" SessionMaxAge 1 </Files> <FilesMatch "^(?!login.html).*"> require valid-user </FilesMatch> AuthFormProvider file AuthFormLoginRequiredLocation /~user/login.html AuthUserFile "/home/user/public_html/.htpasswd" AuthType form AuthName "realm" Session On SessionCookieName session path=/~user/ SessionCryptoPassphrase hogehoge
Apache内でmod_sessionが指定されていない場合があるので/etc/httpd/conf.modules.d/01-session.confを確かめる。
login.html
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>ログイン</title> </head> <body> <form method="POST" action="dologin.html"> Username: <input type="text" name="httpd_username" value="" /><br /> Password: <input type="password" name="httpd_password" value="" /> <button type="submit" name="login" value="Login">Login</button> </form> </body>
logout.html
<!doctype html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>ログアウト</title> </head> <body> <p> ログアウトしました。 <br> <a href="login.html">ログイン</a> </p> </body> </html>