Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
def become
sign_out :admin
sign_in(:user, User.find(params[:id]))
redirect_to root_url
end
$this->_authAdapter = new Zend_Auth_Adapter_DbTable(
$db,
'engine_users',
'user_id',
'password',
"MD5(CONCAT('".$salt."', ?, salt))"
);
$this->_auth->getStorage()->write($user_id);
class ImpersonateMiddleware(object):
def process_request(self, request):
if request.user.is_superuser and "__impersonate" in request.GET:
request.session['impersonate_id'] = int(request.GET["__impersonate"])
elif "__unimpersonate" in request.GET and 'impersonate_id' in request.session:
del request.session['impersonate_id']
if request.user.is_superuser and 'impersonate_id' in request.session:
request.can_unimpersonate = True
request.user = User.objects.get(id=request.session['impersonate_id'])
В мире Windows Authentication есть уже готовое красивое решение под названием Impersonation. Т.е. когда один пользователь как-бы прикидывается другим, получая его права и возможность выполнять действия от его имени.
LogonUser("LOCAL SERVICE", String.Empty, String.Empty, 5 /* service-type logon */, 0, out userToken);
DuplicateToken(userToken, 2, ref userToken2);
identity = new WindowsIdentity(userToken2);
context = identity.Impersonate();
...
context.Undo();
Логинимся на сайт под чужим аккаунтом не имея пароля