Python piramidinde basit bir kimlik doğrulaması yapıyorum, burada güvenlik kimlik doğrulaması bölümünü yapıyorum.UndefinedError: 'pyramid.util.Request nesnesi' özniteliği yok 'kullanıcı'
from pyramid.authentication import AuthTktAuthenticationPolicy
from pyramid.authorization import ACLAuthorizationPolicy
from .models.user import User
class MyAuthenticationPolicy(AuthTktAuthenticationPolicy):
def authenticated_userid(self, request):
user = request.user
if user is not None:
return user.id
def get_user(request):
user_id = request.unauthenticated_userid
if user_id is not None:
user = request.dbsession.query(User).get(user_id)
return user
def includeme(config):
settings = config.get_settings()
authn_policy = MyAuthenticationPolicy(
settings['auth.secret'],
hashalg='sha512',
)
config.set_authentication_policy(authn_policy)
config.set_authorization_policy(ACLAuthorizationPolicy())
config.add_request_method(get_user, 'user', reify=True)
ayar
security.py ilk kez çalışır ve istek yöntemi de talep eklenir init dosyasına eklenir.
Kullanıcı adı ve şifreyi kontrol ettikten ve hatırlama kodunu yazıp kullanıcı bilgilerini depolamasından sonra temelde bu oturum çalışmıyor olabilir.
default.py adı ve şifrenizle doğruladıktan sonra buraya
@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 sign_in_out(request):
username=request.POST.get('username')
if username:
user=UserService.by_name(username)
if user and user.verify_password(request.POST.get('password')):
headers=remember(request,user.name)
return HTTPFound(location=request.route_url('admin'),headers=headers)
else:
headers=forget(request)
return HTTPFound(location=request.route_url('home'),headers=headers)
. Ben o kısmı bu yukarıda başlıklarından = hatırlamak (istek, user.name) dönüş HTTPFound (location = request.route_url ('Yönetici'); başlıklar = başlıklar)
kopyalanan yapıyorum çalışıyor kontrol ettikten Bu bana bir hata atar yapıyor dosya admin.jinja2
welcome {{request.user.name}}
kadar yönetici rota admin.jinja2 kılan jinja2.exceptions.UndefinedError
UndefinedError: 'pyramid.util.Request object' has no attribute 'user'
Ve bu güvenlik nasıl ekliyorsunuz? –
config.include ('. Güvenlik') __init__.py içinde Kök klasöründe –
2 şey akla gelir: a) 'get_user' AttributeError atar, veya b)' includeme' aslında çalışmıyor (belki de orada hata ayıklamanız gerekir) –