Backup of blog/2008-04-18 (1) Back


Back to History list

#navi(../)
*cakePHPのユーザ認証 [#q05ba98e]
基本的に不特定多数が使用するWebアプリではユーザ認証を必要とする。フォーラムやmixiのようなSNS、ポータルサイトで使われるXoopsに代表されるようなCMSでは、サイトに投稿する前に、まずユーザ登録をするだろう。webの世界では、2ちゃんねるやwikiのようなだれでも投稿できるというのは、実際少数である。

あなたは、掲示板やblogサイトを利用していて度重なるスパム攻撃に遭ったことはないだろうか?これは、善意でコメント欄を用意しているのを悪用して、検索エンジンにクロールしてもらうよう対象となるURLを入れるのが目的である。誤クリックを狙うのが一般的だったが、最近では人間がアクセスすることを前提としていない。いずれにせよ、身元不詳の投稿にはロクなものがない。

ユーザ認証を入れる最大の理由はこれである。もちろん、ただユーザ認証すればいいというものではない。やはり本人確認が必要になってくる。そこで、本人確認にメールアドレスを使うのが一般的だ。もちろん、捨てアカウントメールというのがあるくらい完璧なものではないが・・・。

まぁ、とりあえずユーザ認証処理を入れてみよう。自分がMML投稿サイト開発用に使っているフレームワーク:cakePHP1.2ではAuthコンポーネントと呼ばれるユーザ認証処理専用のプログラムが用意されている。では、早速コーディングだ。

#code(sql){{
--
-- テーブルの構造 `users`
--

CREATE TABLE IF NOT EXISTS `users` (
  `id` int(11) NOT NULL auto_increment,
  `username` varchar(12) character set ascii default NULL COMMENT 'ユーザ名',
  `password` varchar(64) character set ascii default NULL COMMENT 'パスワード',
  `email` varchar(32) collate utf8_unicode_ci NOT NULL COMMENT 'メールアドレス',
  `created` datetime NOT NULL COMMENT '作成日',
  `modified` datetime NOT NULL COMMENT '修正日',
  PRIMARY KEY  (`id`),
  UNIQUE KEY `email` (`email`),
  UNIQUE KEY `username` (`username`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=2 ;
}}