Dancer::Plugin::Auth::Extensible
आपके लिए बहुत सारे बॉयलरप्लेट कोड का ख्याल रखता है। आप अपना कोई भी /login
. लिखे बिना एक सरल लॉगिन सिस्टम को ऊपर और चलाने के लिए प्राप्त कर सकते हैं मार्ग इस प्रकार हैं।
कॉन्फ़िगर करें डांसर::प्लगइन::Auth::Extensible
Dancer::Plugin::Database
इंस्टॉल करें
और Dancer::Plugin::Auth::Extensible::Provider::Database
और इसे config.yml
. में जोड़ें :
session: "YAML"
plugins:
Auth::Extensible:
realms:
users:
provider: 'Database'
disable_roles: 1
डेटाबेस कनेक्शन कॉन्फ़िगर करें
अपने डेटाबेस कनेक्शन को environment/development.yml
. में कॉन्फ़िगर करें ताकि आपके पास देव और उत्पादन के लिए अलग-अलग कॉन्फ़िगरेशन हो सकें। यह एक अलग विकल्प फ़ाइल database.cfg
में संग्रहीत कनेक्शन क्रेडेंशियल (डेटाबेस नाम, होस्ट, उपयोगकर्ता नाम और पासवर्ड) के साथ MySQL के लिए कॉन्फ़िगरेशन जैसा दिखता है। :
plugins:
Database:
dsn: 'dbi:mysql:;mysql_read_default_file=/path/to/database.cfg'
dbi_params:
RaiseError: 1
AutoCommit: 1
पोस्टग्रेज के लिए, आपको .pgpass
अपने कनेक्शन क्रेडेंशियल्स को स्टोर करने के लिए फ़ाइल। सुनिश्चित करें कि फ़ाइल विश्व पठनीय नहीं है। देखें यह स्टैक ओवरफ़्लो पोस्ट
एक उदाहरण के लिए। जांचें कि आपकी क्रेडेंशियल फ़ाइल कमांड लाइन पर काम करती है और आपका वेबसर्वर इसे पढ़ सकता है।
आपकी मौजूदा तालिका सुझाई गई स्कीमा दस्तावेज़ों में, लेकिन यदि ऐसा नहीं भी होता है, तो आप कॉन्फ़िगरेशन ।
अपने रास्ते बंद करें
require_login
जोड़ें उस मार्ग के लिए कीवर्ड जिसे आप सुरक्षित करना चाहते हैं। एक /लॉगिन
रूट एक बुनियादी लॉगिन फ़ॉर्म के साथ स्वचालित रूप से जेनरेट हो जाएगा, हालांकि आप अपना स्वयं का बनाएं
अगर आपको पसंद है।
lib/MyApp.pm
package MyApp;
use Dancer ':syntax';
use Dancer::Plugin::Auth::Extensible;
our $VERSION = '0.1';
get '/' => require_login sub {
template 'index';
};
true;
(हां, वास्तव में यही वह कोड है जिसे आपको लिखना है। मैंने आपको बताया था कि यह बहुत सारे बॉयलरप्लेट का ख्याल रखता है।)
Crypt::SaltedHash
पासवर्ड स्वचालित रूप से हैश करने के लिए उपयोग किया जाता है। ध्यान दें कि आपको अपने डेटाबेस में प्लेनटेक्स्ट पासवर्ड कभी भी स्टोर नहीं करना चाहिए; जब आप अपने डेटाबेस में एक उपयोगकर्ता जोड़ते हैं, तो आपको पासवर्ड का हैश जेनरेट करना चाहिए और हैश को स्टोर करना चाहिए।
ध्यान दें कि इस उदाहरण में भूमिकाएँ अक्षम हैं। अगर आप भूमिकाएं सक्षम करते हैं, तो आप अन्य अच्छी चीजें कर सकते हैं जैसे केवल व्यवस्थापक भूमिका वाले उपयोगकर्ताओं को व्यवस्थापक पृष्ठ देखने की अनुमति दें।