Включила мд5 шифрование тут:
app.cfg
identity.saprovider.encryption_algorithm='md5'
@expose(template="cmts.templates.adduser")
@identity.require(identity.in_group("admin"))
def saveuser(self, **kw):
# .... blabla
if kw['password'] != "":
user.password = identity.current_provider.encrypt_password (kw['password'])
else:
session.close()
return dict(adduser_widget = adduser_widget, message=" Empty password field!")
session.commit()
2009-10-21 13:47:19,239 turbogears.identity.saprovider INFO Passwords don't match for user: admi
2009-10-21 13:47:19,239 turbogears.identity WARNING The credentials specified weren't valid
Понять можно :-) Если рассуждать логически, то при логине clear text password должен зашифровываться, чтобы совпасть с тем, что хранится в базе в зашифрованном виде (хотя если тупо скопировать зашифрованный пароль типа “ce365c0b37f3ea94bce7995ff4420c25” из базы, то с ним тоже залогиниться не получается)
Короче, я застряла.
То, что в ниже описанном классе указано - это недостаточно, видимо.
model.py
class User(object):
def permissions(self):
p = set()
for g in self.groups:
p |= set(g.permissions)
return p
permissions = property(permissions)
def by_email_address(cls, email):
return cls.query.filter_by(email_address=email).first()
by_email_address = classmethod(by_email_address)
def by_user_name(cls, username):
return cls.query.filter_by(user_name=username).first()
by_user_name = classmethod(by_user_name)
def _set_password(self, password):
self._password = identity.encrypt_password(password) #<--- вот тут
def _get_password(self):
return self._password
password = property(_get_password, _set_password)