설치 방법
- OpenID component 를 다운받습니다.
- “app/controllers/components” 위치에 다운받은 openid.php 파일을 복사 합니다.
- PHP OpenID Library 2.1.x 를 다운 받습니다.
- “Auth” 디렉토리를 “vendors” 디렉토리에 복사합니다.
- “Auth/OpenID/Consumer.php” 파일 소스을 변경해주세요
if (Auth_OpenID::arrayGet($q, $key) != $value) {
on line 922 with
if ($key != 'url' && Auth_OpenID::arrayGet($q, $key) != $value) {
- EAUT library 를 다운받은 후 , Email.php 파일을 Auth/Yadis 디렉토리에 복사합니다.
- controller(s) 에서 component 를 추가하여 사용할 수 있습니다:
public $components = array('Openid');
사용 예제
Login form (app/views/users/login.ctp):
<?php
if (isset($message)) {
echo '<p class="error">'.$message.'</p>';
}
echo $form->create('User', array('type' => 'post', 'action' => 'login'));
echo $form->input('OpenidUrl.openid', array('label' => false));
echo $form->end('Login');
?>
And the controller (app/controllers/users_controller.php):
<?
class UsersController extends AppController {
public $components = array('Openid');
public $uses = array();
public function login() {
$returnTo = 'http://'.$_SERVER['SERVER_NAME'].'/users/login';
if (!empty($this->data)) {
try {
$this->Openid->authenticate($this->data['OpenidUrl']['openid'], $returnTo, 'http://'.$_SERVER['SERVER_NAME']);
} catch (InvalidArgumentException $e) {
$this->setMessage('Invalid OpenID');
} catch (Exception $e) {
$this->setMessage($e->getMessage());
}
} elseif (count($_GET) > 1) {
$response = $this->Openid->getResponse($returnTo);
if ($response->status == Auth_OpenID_CANCEL) {
$this->setMessage('Verification cancelled');
} elseif ($response->status == Auth_OpenID_FAILURE) {
$this->setMessage('OpenID verification failed: '.$response->message);
} elseif ($response->status == Auth_OpenID_SUCCESS) {
echo 'successfully authenticated!';
exit;
}
}
}
private function setMessage($message) {
$this->set('message', $message);
}
}
?>