Когда пользователь вошел в систему, он указал свое имя и необработанный пароль, который был хэширован и сравнен со значением в БД.
def login(request):
username = request.POST['username']
password = request.POST['password']
user = auth.authenticate(username=username, password=password)
if user is not None and user.is_active:
# user is active
auth.login(request, user)
# relink to right page
return HttpResponseRedirect("/account/loggedin/")
else:
# error page
return HttpResponseRedirect("/account/invalid/")
или я мог бы просто использовать:
@login_required
def index(request):
if request.user.is_authenticated():
return render_to_response('polls/index.html', {'sessionDic' : request.session})
else:
#some stuff
Проблема в том, что после входа в систему следующие запросы содержат только файлы cookie, которые проверены, и пользователю не нужно повторно вводить свои учетные данные.
Но мне нужно иметь необработанный пароль пользователя в View во всех методах, чтобы войти в систему для пользователя linux и выполнить какую-либо программу linux от имени этого пользователя. Например, программа su
используется для переключения пользователя ritgh linux:
def ssh_command (user, password, command):
child = pexpect.spawn('su -l %s -c \'%s\'' % (user, command))
i = child.expect([pexpect.TIMEOUT, pexpect.EOF, 'Password: '])
if i == 0: # Timeout
print 'ERROR!'
print 'su can\'t be executed:'
print child.before, child.after
return None
if i == 1: # EOF
print 'ERROR'
print 'EOF error'
print child.before, child.after
return None
child.sendline(password)
return child
def main ():
user = 'test'
password = 'test'
child = ssh_command (user, password, 'curl habrahabr.ru | wc -c')
child.expect(pexpect.EOF)
print child.before
print child.after
print child.match
Как я могу сохранить необработанный пароль пользователя и заменить его необходимыми функциями?