認証について

こんにちは。管理人の わいあーど です。
寒くなりましたね、みなさんいかがお過ごしですか。

本当はモデルのお話の続きを書こうと思ったのですが、
まだ書けておりません。
すいません・・・リアルへたれで。

なので、急遽CookBookを見ながら料理してみました認証(Auth)について始めます。

CakeCookbook
http://book.cakephp.org/ja/view/172/Authentication
をみながらの作業です。
ではではスタート。

まず、認証とはパスワードとIDでユーザーを識別するアレのこと。
ログインとか書いてあるフォームのことです。


CakePHPでは標準で、データーベース内のテーブル名「users」にある、
usernameとpasswordというカラム名をつかうそうです。
(passwordは自動で暗号化してくれます)


さっそく書いてみましょう。
まずはtableつくろっと、


mysql> create table users(
-> id integer auto_increment not null primary key,
-> username char(50) not null,
-> password char(50) not null
);


varcharとcharの違いは、データーが固定長(char)か可変長(varchar)とのこと、
charの場合は指定サイズに満たない分はスペースで埋めます。
データーを探すときにスペースが後ろに入っていることを考慮してコーディングしてくださいってことみたい。

コントローラー側ですが、
redirect($this->Auth->logout());
}
}


classの中に

var $components = array('Auth');

と書くだけでいいよ。とあります。
しかも、login()のところが空っぽなのが不思議な気持ちになります。

ビュー側はlogin.ctpを/view/users/の中に書きます。

これだけで良いとのことですが、logout.ctpは作らないのかな。


check('Message.auth')) $session->flash('auth');
echo $form->create('User',array('action'=>'login'));
echo $form->input('username');
echo $form->input('password');
echo $form->end('Login');
?>


$session->check('Message.auth')

$session->check('auth')

のところがまだよく分からないのですが、まずは動くところを見てみよっと。

えっとその前にモデルですね。

data)) {
$this->user->save($this->data);
$this->redirect("./login");
}
}


を追加します。
フォームが空で無いならuserテーブルに書き込みです。

view側も作ります。

app/view/users/signup.ctp

サインアップ
create("User",array("action"=>"./signup")); ?>
input("username"); ?>
input("password"); ?>
end("送信"); ?>

これでOK、早速ユーザーをつくろう!
っとアクセスしたものの、やはりloginページにリダイレクトされます。
usersコントローラーにアクセスするとまずログインという動作をするということが分かりました。

ですので、signupアクションの時には認証をしないという仕様にします。

function beforeFilter() {
$this->Auth->allow('signup');
}

allow('認証を除外したいアクション名');

で指定します。

認証に成功しているか確認するだけですので、

http://localhost/users/signup

で新規ユーザーの登録が出来て、
loginページで正しいパスワードとidでエラーがでなければOKです。
間違ったid/passwordですとエラーがでます。

のちのちには登録後、確認メールが来てURLにアクセスしてくれれば正式登録というのを
やりたいのですが、とりあえず今日はここまで。

この記事へのコメント

MattBdozy
2015年07月09日 06:13
A church was created with the pensive that if Indiana’s budding law protected unerring practices, then it should also permit marijuana run through as division of a broader spiritual philosophy.
BrianHyday
2017年08月20日 08:25
For decades, Wunsiedel, a German town near the Czech border, has struggled with a parade of unwanted visitors.
It is the birthplace of one of Adolf Hitler’s deputies, a man named Rudolf Hess. And every year, to residents’ chagrin, neo-Nazis marched to his grave site there.