Как вызвать пользовательский выход из системы в django?

Аналогично другому ответу, но вы можете использовать ArrayAdapter для заполнения на основе класса Enum. Я бы порекомендовал переопределить toString в классе Enum, чтобы значения, заполненные в счетчике, были более удобными для пользователя. В задании:

Spinner mySpinner = (Spinner) findViewById(R.id.mySpinnerId);

mySpinner.setAdapter(new ArrayAdapter<MyEnum>(this, android.R.layout.simple_spinner_item, MyEnum.values()));

Ваш начальный класс:

public enum MyEnum{
    ENUM1("Enum 1"),
    ENUM2("Enum 2");

    private String friendlyName;

    private MyEnum(String friendlyName){
        this.friendlyName = friendlyName;
    }

    @Override public String toString(){
        return friendlyName;
    }
}
70
задан Sergey Golovchenko 5 June 2009 в 01:27
поделиться

2 ответа

Я не думаю, что есть санкционированный способ сделать это в Django.

Идентификатор пользователя хранится в объекте сеанса, но он закодирован. К сожалению, это означает, что вам придется перебирать все сеансы, декодировать и сравнивать ...

Два шага:

Сначала удалите объекты сеанса для вашего целевого пользователя. Если они войдут в систему с нескольких компьютеров, у них будет несколько объектов сеанса.

from django.contrib.sessions.models import Session
from django.contrib.auth.models import User

# grab the user in question 
user = User.objects.get(username='johndoe')

[s.delete() for s in Session.objects.all() if s.get_decoded().get('_auth_user_id') == user.id]

Затем, если вам нужно, заблокируйте их ....

user.is_active = False
user.save()
75
ответ дан 24 November 2019 в 13:17
поделиться

Возможно, немного промежуточного программного обеспечения, которое ссылается на список пользователей, которые были вынуждены выйти из системы. В следующий раз, когда пользователь попытается что-либо сделать, выйдите из системы, перенаправит и т. Д.

Если, конечно, им не нужно немедленно выйти из системы. Но опять же, они не заметят этого, пока не попытаются в следующий раз сделать запрос, поэтому приведенное выше решение может просто работать.

7
ответ дан 24 November 2019 в 13:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: