मैं सोच रहा था कि अगर किसी को टोरनाडो में लॉगिन/साइनअप पेज को लागू करने के लिए किसी भी उदाहरण कोड या ट्यूटोरियल के बारे में पता है? मैंने उन उदाहरणों को देखा जो इसके साथ आते हैं, लेकिन वे बहुत फेसबुक/ओथ केंद्रित लगते हैं।टोरनाडो लॉगिन उदाहरण/ट्यूटोरियल
18
A
उत्तर
31
यहां एक साधारण उदाहरण हैडलर है, जिसे एक login.html टेम्पलेट की आवश्यकता है जिसमें उपयोगकर्ता नाम/पासवर्ड फॉर्म है। मेरे पास साइन अप उदाहरण नहीं है, लेकिन यह काफी समान है, पोस्ट पर आप इनपुट को मान्य करते हैं और प्रमाणीकरण के बजाए उपयोगकर्ता रिकॉर्ड डालते हैं।
class BaseHandler(tornado.web.RequestHandler):
def get_login_url(self):
return u"/login"
def get_current_user(self):
user_json = self.get_secure_cookie("user")
if user_json:
return tornado.escape.json_decode(user_json)
else:
return None
class LoginHandler(BaseHandler):
def get(self):
self.render("login.html", next=self.get_argument("next","/"))
def post(self):
username = self.get_argument("username", "")
password = self.get_argument("password", "")
# The authenticate method should match a username and password
# to a username and password hash in the database users table.
# Implementation left as an exercise for the reader.
auth = self.db.authenticate(username, password)
if auth:
self.set_current_user(username)
self.redirect(self.get_argument("next", u"/"))
else:
error_msg = u"?error=" + tornado.escape.url_escape("Login incorrect.")
self.redirect(u"/login" + error_msg)
def set_current_user(self, user):
if user:
self.set_secure_cookie("user", tornado.escape.json_encode(user))
else:
self.clear_cookie("user")
class LogoutHandler(BaseHandler):
def get(self):
self.clear_cookie("user")
self.redirect(u"/login)
11
मैं कोल उदाहरण का उपयोग शुरू किया, लेकिन महसूस किया कि मैं डेटाबेस है जो हमारे webapp के लिए एक खाते के रूप में एक ही बात नहीं हो सकता है तक पहुँचने के लिए एक खाता बनाने गया था।
मैंने उपरोक्त उदाहरण को bcrpyt का उपयोग करने के लिए बदल दिया है। अब हमारे वेबपैप का उपयोगकर्ता का कनेक्शन डेटाबेस के हमारे वेबैप के कनेक्शन से अलग है। My sample app on github
नोट: bcrpyt computationally भारी है और आईओ पाश
class BaseHandler(tornado.web.RequestHandler):
def get_login_url(self):
return u"/login"
def get_current_user(self):
user_json = self.get_secure_cookie("user")
if user_json:
return tornado.escape.json_decode(user_json)
else:
return None
class LoginHandler(BaseHandler):
def get(self):
self.render("login.html", next=self.get_argument("next","/"), message=self.get_argument("error",""))
def post(self):
email = self.get_argument("email", "")
password = self.get_argument("password", "")
user = self.application.syncdb['users'].find_one({ 'user': email })
if user and user['password'] and bcrypt.hashpw(password, user['password']) == user['password']:
self.set_current_user(email)
self.redirect("hello")
else:
error_msg = u"?error=" + tornado.escape.url_escape("Login incorrect.")
self.redirect(u"/login" + error_msg)
def set_current_user(self, user):
print "setting "+user
if user:
self.set_secure_cookie("user", tornado.escape.json_encode(user))
else:
self.clear_cookie("user")
class RegisterHandler(LoginHandler):
def get(self):
self.render( "register.html", next=self.get_argument("next","/"))
def post(self):
email = self.get_argument("email", "")
already_taken = self.application.syncdb['users'].find_one({ 'user': email })
if already_taken:
error_msg = u"?error=" + tornado.escape.url_escape("Login name already taken")
self.redirect(u"/login" + error_msg)
password = self.get_argument("password", "")
hashed_pass = bcrypt.hashpw(password, bcrypt.gensalt(8))
user = {}
user['user'] = email
user['password'] = hashed_pass
auth = self.application.syncdb['users'].save(user)
self.set_current_user(email)
self.redirect("hello")
संबंधित मुद्दे
- 1. टोरनाडो
- 2. टोरनाडो
- 3. टोरनाडो पर्यवेक्षक
- 4. टोरनाडो असिंक्रोनस हैंडलर
- 5. टोरनाडो: एक ही IOLoop
- 6. टोरनाडो - '_xsrf' तर्क POST
- 7. टोरनाडो और पायथन 3.x
- 8. लॉगिन
- 9. लॉगिन()
- 10. क्या टोरनाडो वास्तव में गैर-अवरुद्ध है?
- 11. टोरनाडो। Django- जैसे testrunner और test डेटाबेस
- 12. फेसबुक का नया टोरनाडो ढांचा क्या है?
- 13. गिराए गए कनेक्शन पर टोरनाडो मेमोरी रिसाव
- 14. टोरनाडो AsyncHTTP क्लाइंट कॉलबैक लाने: अतिरिक्त पैरामीटर?
- 15. टोरनाडो वेब फ्रेमवर्क MySQL कनेक्शन हैंडलिंग
- 16. HttpWebResponse लॉगिन
- 17. लॉगिन API
- 18. लॉगिन बटन
- 19. उपयोगकर्ता लॉगिन
- 20. वेबसाइट लॉगिन
- 21. लॉगिन नाम
- 22. Google लॉगिन
- 23. टोरनाडो एप्लिकेशन में आवेदन अपवादों को गहन रूप से संभालना
- 24. मैं टोरनाडो अनुरोध के क्लाइंट आईपी कैसे प्राप्त करूं?
- 25. टोरनाडो से आप * सही * क्वेरी रेडिस कैसे करते हैं?
- 26. वापसी के बाद अनुरोध हैंडलर में टोरनाडो प्रक्रिया डेटा
- 27. टोरनाडो, Nginx, Apache ab - apr_socket_recv: सहकर्मी द्वारा कनेक्शन रीसेट (104)
- 28. एएसपी कैसे ढूंढें: लॉगिन लॉगिन त्रुटि त्रुटि प्रकार
- 29. सीएएस लॉगिन स्क्रीन के बिना जेएएसआईजी सीएएस लॉगिन
- 30. रेल: एप्लिकेशन कंट्रोलर में, लॉगिन लॉग इन करें, लॉगिन
हम्म अवरुद्ध कर देगा धन्यवाद unclearness वहाँ उनका कहना है के लिए .. मेरी उदाहरण में प्रमाणित विधि उन तालिका में एक उपयोगकर्ता देखने के लिए माना जाता है , और यदि पासवर्ड संग्रहीत हैश से मेल खाता है तो उपयोगकर्ता को वापस कर दें। मैं निश्चित रूप से एक नया डेटाबेस कनेक्शन स्थापित करने का मतलब नहीं था, जो पागल हो जाएगा। स्पष्टता के लिए अब अपडेट किया गया। –
आपका यूआरएल "गिट हब पर मेरा नमूना ऐप" पृष्ठ देने में त्रुटि नहीं मिली ... क्या आप इसे अपडेट कर सकते हैं ...? – Shiva
लिंक अपडेट किया गया। https://github.com/bootandy/tornado_sample –