内容 | 既存ウェブサイトへのアクセス制御機能の追加開発 |
---|---|
期間 | 2008年6月 |
OS | Linux |
言語 | PHP |
アプリ | Apache |
あるウェブサイトを運営している制作会社から、サイトに会員制を導入するので特定のディレクトリ下のページを会員のみアクセス出来るようにして欲しいという依頼を受け、そのような機能の追加開発を行いました。
クライアントの都合でコストをかけられないため、簡易ですが十分な機能性のシステムを短期間で開発しました。
通常、ウェブサイトでアクセス制御を行うには、
- ウェブフレームワークのアクセス制御機能を利用する
- (ウェブフレームワークを利用していない場合は)ページの初期化ルーチンにアクセス制御の実装を追加する
と思います。
これはサイトがPHP/Perlなど動的ページで構成されている場合で、このサイトの場合、静的なHTMLだけで構成されていました。
本案件では工期・予算的にサイトの全面的な修正は無理なため、Apacheのベーシック認証を利用してはどうか?と提案しましたが、ベーシック認証のダイアログによるUIは嫌で、デザインされたページでログインフォームにIDとパスワードを入力するUIにしたいと言われました。
当該サイトのウェブサーバのシステム環境を調べると、共用レンタルサーバでしたが、PHPの利用及び.htaccessによる設定のオーバーライドは可能でした。
そこで、
- ApacheのAddTypeで拡張子.htmlをPHPに関連付け、全てのHTMLページへのリクエストをPHPで処理させる
- PHPのauto_prepend_file機能を使ってPHPによるアクセス制御処理を呼び出す
- 未ログインのユーザはログインフォームページにリダイレクトし、ログインフォームからIDとパスワードによってログインする
というシステムを提案しました。
会員種別に応じたページだけ参照出来るようにするなどいくつかの要件を盛り込んだ上で、納品したシステムはPHPファイルが2つ、.htaccessファイルが2つ、ログインフォームページのサンプルHTMLファイルが1つでした。
既存のHTMLファイルは一切修正する必要がないようにしました。
新たにアクセス制御したいページが出来た場合でも、HTMLファイルは普通に作成し、そのファイルを置くディレクトリに.htaccessファイルをコピーするだけでよいので、追加開発を依頼する必要はありません。
手離れの良いシステムになったと思います。
この案件のクライアントは以前から知ってる会社で、最初にメールで連絡があり、何度かメール・電話のやり取りで要件定義した後、その日のうちにメールでPDFの発注書を送ってもらい、受注しました。
翌日、数時間かけてプログラムを作り、サーバ設定をし、プログラムはメールで納品しました。
予算の少ない小さなシステムだからどう作っても一緒という事はなく、大きなシステムとは違った工夫や手際の良さを発揮する余地があると思います。
大きなアクセスが見込めないサイト、運営にスキルのあるオペレーターがいるサイト、そういったサイトに過度の機能性を盛り込んでもコストが膨らむだけなわけでしで、必要にして十分なシステムを提案する事を心がけています。