Authkit: การแก้หน้าลงทะเบียนเข้าอย่างง่าย
Posted March 01, 2009 at Pylons66
หลังจากที่ผมใช้ AuthKit แบบใช้ form มาสักพัก มันก็เป็นหน้าขาวๆ ธรรมดาก็เลย อยากเปลี่ยนหน้านั้นให้ดูเหมือนหน้าอื่นๆ ผู้ใช้จะได้ไม่งงด้วย การทำอย่างนั้นก็ก็ต้องมีวิธีพิเศษนิดหน่อย ซึ่งในที่สุดก็หาวิธีได้จาก http://jimmyg.org/2007/08/14/pylons-mako-templates-in-authkit/ และคำแนะพร้อม code ของ @sirn แต่เพิ่มเก็บไว้ดูเอง ผมก็เลยทำตัวอย่างที่ง่ายขึ้นอีก เพื่อความเข้าใจมากกว่าเพื่อเอาไปใช้จริงๆ ขั้นตอนในการแก้ฟอร์มที่ใช้ลงทะเบียนเข้าคือ แก้ In development.ini เพิ่ม “authkit.form.template.obj” เข้าไป authkit.setup.enable = true authkit.setup.method = form, cookie authkit.form.authenticate.user.type = basaasa.users.authkit_elixir_driver:UsersFromDatabase authkit.form.authenticate.user.data = basaasa.model authkit.cookie.secret = SomeSec authkit.cookie.signoutpath = /auth/signout authkit.form.template.obj = basaasa.lib.auth:make_template #เพิ่ม เพิ่ม auth.py เข้าไปใน /basaasa/lib auth.py: def make_template(): return """ Signin
BasaAsa: Signin
ผมพยายามจะเขียนตัวอย่างการทำให้เว็บเข้าใช้ได้ด้วย OpenID โดยใช้ AuthKit 0.4.3 และ Pylons 0.9.7 โดยพยายามดัดแปลงตัวอย่างของ AuthKit มา เริ่มเแรกผมก็สร้าง app ขึ้นมาใหม่เลยชื่อ topenid แล้วก็แก้ไขตามขั้นตอนต่อไปนี้ development.ini: ผมเพิ่มบรรทัดข้างล่างเข้าไปใน development.ini authkit.setup.enable = true authkit.setup.method = openid, cookie authkit.openid.store.type = file authkit.openid.store.config = authkit.openid.charset = UTF-8 authkit.openid.path.signedin = /auth/signin authkit.cookie.signoutpath = /auth/signout authkit.openid.store.baseurl = http://localhost:5000 authkit.cookie.secret = somesecret ใน topenid/config/middleware.py ... import authkit.authenticate # เพิ่มบรรทัดนี้ ... app = PylonsApp() app = authkit.authenticate.middleware(app, app_conf) # เพิ่มบรรทัดนี้ ... topenid/controllers/auth.py import logging from [...]
ผมใช้ AuthKit และ OpenID บนโปรแกรมของผมที่เขียนด้วย พอเริ่มจะได้ได้แล้วผมก็อยากจะแก้หน้าลงทะเบียนเข้าใช้งาน (Sign in) สักหน่อย. จริงๆ แล้วก็แก้ได้ง่ายๆ เพราะว่าใช้วิธีคล้ายๆ กับการสร้างหน้าลงทะเบียนเข้าใช้งานใหม่สำหรับ AuthKit + form นอกจากจะเขียนถึงตัวอย่างแล้ว ผมก็จะพยายามอธิบายด้วยนิดหน่อย สมมุติว่าใช้ AuthKit + OpenID ได้อยู่แล้วจะแก้หน้าลงทะเบียนเข้าใช้ใหม่ผมก็เริ่มแก้ไขจาก development.ini ให้ชี้ไปที่ template ใหม่ authkit.openid.template.obj = topenid.lib.signin:make_template นอกจากนั้นก็เพิ่ม 2 ไฟล์เข้าไป ได้แก่ topenid/lib/signin.py และ topenid/template/signin.html topenid/lib/signin.py: # This file is based on example from http://jimmyg.org/2007/08/14/pylons-mako-templates-in-authkit/ from pylons.templating import Buffet from pylons import config import topenid.lib.helpers as h class MyBuffet(Buffet): [...]