如何在sqlalchemy

时间:2016-03-27 08:08:37

标签: python authentication login sqlalchemy pyramid

尝试使用金字塔框架在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)

我想要实现的是一个简单的登录系统,用于测试用户名和密码,然后重定向

1 个答案:

答案 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;他们。散列是一种单向操作,而加密可以颠倒(解密)。