वीर

23 เมษายน 2008

ใช้ AuthComponent ของ CakePHP 1.2.x อย่างง่าย

Filed under: Uncategorized — Tags: , , , , , , , , , , , , — वीर @ 09:35

หลังจากติดตั้ง CakePHP เรียบร้อยแล้ว. นอกจากนั้นเพื่อให้การทดลองเป็นได้โดยสะดวกผมคิดว่าควรจะสร้าง view กับ controller ง่ายๆ ไว้ใช้ในทดลองก่อน. จากนั้นก็สร้าง user table ผ่านทาง CakeSchema. แล้วก็เตรียม model ของ users table พร้อมด้วย add user เข้าไปลองก่อนสัก user. ขั้นตอนต่อไปก็แก้ AppController ที่อยู่ใน  cake/libs/controller/app_controller.php นิดหน่อย พอแก้แล้วหน้าตาก็จะเป็นแบบด้านล่าง:

< ?php

/* มี comment ต่างๆ นานา */

class AppController extends Controller {
    var $components = array('Auth', 'Acl');
}
?>

ทีนี้ก็ลองเข้าเปิดเว็บดูหน้า http://localhost/my_project/books/display1 ถ้า app ของเราทำงานถูกต้องหน้าเว็บจะถูก redirect ไปที่ http://localhost/my_project/users/login แบบข้างล่าง

แล้วก็กรอก username: myusername และ password: mypassword (ตามที่ add ไปก่อนหน้านี้ในการเตรียม model ของ users table พร้อมด้วย add user เข้าไปลองก่อนสัก user. ) แล้วก็กด “submit” ถ้าเข้าได้ปกติมันก็ redirect มาที่ books/display1 ตามที่เข้าไว้ตอนแรก.

ถ้ามี warning ว่าเขียน app/tmp ไม่ได้ขึ้นมาแบบในตัวอย่างผมก็แก้ permission เอา โดยใช้คำสั่ง chmod -R 777 app/tmp ทำให้ทุก user เขียนได้ … อาจจะมีใช่วิธีแก้ปัญหาที่ดีแต่มันก็ทำ warning หายไป :-P.

เวลาจะ logout ก็แค่เข้าไปที่ http://localhost/my_project/users/logout

ก็เป็นอันว่าเว็บที่สร้างขึ้นมามีระบบ login แล้ว แต่ก็แยกได้แค่ว่า login หรือไม่ login. ใคร login ก็ดูได้ทุกหน้า ไม่ login ก็ดูอะไรไม่ได้. การจะทำอะไรซับซ้อนกว่านี้ใช้ Access control list (ACL) ช่วยได้.

5 ความคิดเห็น »

  1. [...] cake, cakephp, howto, php, thai, tutorial, web หลังจากที่ลองใช้ AuthComponent อย่างง่ายไปแล้ว. ผมก็อยากจะลอง ACL (Access control list) บ้าง [...]

    Pingback โดย CakePHP 1.2.x: Action-based ACL « वीर — 24 เมษายน 2008 @ 05:28

  2. ผมทำตามแล้วไม่เห็นมัน login ให้เลยอ่ะครับ login เสร็จก็ยังวิ่งเข้าหน้า login เหมือนเดิม $session->flash(’auth’) ก็ไม่โชว์อะไร
    ผมใช้ cake 1.2 rc1 ครับ

    แต่ผมไปเจอเว็บนี้เข้า http://www.webdevelopment2.com/cakephp-auth-component-tutorial-1/ ดูแล้วยุ่งยากกว่าในเว็บของคุณveer และยากกว่าในเว็บ cakephp เยอะเลยครับ

    เลยอยากรู้ว่าคุณveer ใช้ cake version ครับ

    ความเห็น โดย taohooattack — 1 กันยายน 2008 @ 10:58

  3. ผมใช้ trunk ครับ ยังไงเดี๋ยวผมลอง 1.2rc1 ดูอีกทีครับ

    ความเห็น โดย वीर — 2 กันยายน 2008 @ 08:15

  4. ผมพอจะเดาออกแล้วครับ น่าจะเป็นเพราะ layout พยายามจะโหลด css มา มันก็เลยเกิดไปเรียก auth อีกครั้งนึง ซ้อนๆกันไปเรื่อยๆ
    แต่ยังหาวิธีแก้ไม่ได้ครับ

    ความเห็น โดย taohooattack — 2 กันยายน 2008 @ 10:50

  5. ไฟล์ css ไม่น่าจะถูกตรวจสอบโดย auth นะครับ ปกติจะมีการตรวจสอบ auth เฉพาะ controller’s action อย่างเช่น /posts/edit/1 แต่ถ้าไฟล์อยู่ใน /css เคยลองแล้วจะไม่มีการตรวจสอบการ login อะไรเลยครับ

    อาจจะเป็นเพราะว่าสร้าง form login ใน controller อื่นไม่ใช่ controller users ก็ได้ครับ
    แต่ก็ไม่แน่ใจเพราะไม่เคยสร้าง form login ใน controller อื่นครับ

    ความเห็น โดย num — 4 กุมภาพันธ์ 2009 @ 00:33


RSS feed สำหรับความคิดเห็นในกระทู้นี้ TrackBack URI

เขียนความคิดเห็นของคุณ

บลอกที่ WordPress.com .