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

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

ทีนี้ก็ลองเข้าเปิดเว็บดูหน้า 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 หายไป😛.

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

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

5 thoughts on “ใช้ AuthComponent ของ CakePHP 1.2.x อย่างง่าย

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

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

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

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

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

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

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s