尝试使用金字塔框架在Python中创建一个简单的登录系统。我现在想要做的是,例如,如果我们在php中工作,我们可以轻松打开phpmyadmin并设置一个字段,其中包含用于测试登录系统的用户名和密码。
如何使用sqlalchemy在python金字塔项目中执行此操作
这是我创建表结构的模型类
from test2.models.meta import Base
from which model classes will inherit
from sqlalchemy import (
Column,
Integer,
Unicode, #<- will provide Unicode field
UnicodeText, #<- will provide Unicode text field
Text,
)
class Users(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(Text, unique=True, nullable=False,default='admin')
password = Column(Text, nullable=False,default='password')
from pyramid.view import view_config
from test2.models.services.userservice import UserServices
from pyramid.httpexceptions import HTTPFound, HTTPNotFound
from pyramid.security import remember,forget
这是视图配置
@view_config(route_name='auth',match_param='action=in',renderer='string',request_method='POST')
@view_config(route_name='auth', match_param='action=out', renderer='string')
def dashboard(request):
username=request.POST.get('username')
if username:
user=UserServices.by_name(username)
if user and user.verify_password(request.POST.get('password')):
return HTTPFound(location=request.route_url('home'))
else:
headers=forget(request)
else:
#return HTTPNotFound
headers=forget(request)
return HTTPFound(location=request.route_url('home'),headers=headers)
我想要实现的是一个简单的登录系统,用于测试用户名和密码,然后重定向
答案 0 :(得分:1)
官方Pyramid教程有两个版本,&#34; SQLAlchemy + URL Dispatch Wiki Tutorial&#34;,它们显示了存储密码的错误和正确方式:
在&#34;最新&#34;分支,你会发现how to set passwords in cleartext。 这绝对是存储密码的错误方法。
在&#34; master&#34; branch,we hash passwords。
始终使用已存在的强加密算法(例如bcrypt
)散列密码,并且永远不会尝试编写自己的密码。此外,要迂腐,一个&#34;哈希&#34;密码并没有&#34;加密&#34;他们。散列是一种单向操作,而加密可以颠倒(解密)。