Как установить cookie для входа в систему в django? - PullRequest
0 голосов
/ 04 февраля 2011

Как мне установить set_cookie с именем пользователя, который вошел на мой сайт?

Спасибо

Ответы [ 3 ]

8 голосов
/ 03 января 2014

Вот пример того, как сделать это с помощью промежуточного программного обеспечения

class UserCookieMiddleWare(object):
    """
    Middleware to set user cookie
    If user is authenticated and there is no cookie, set the cookie,
    If the user is not authenticated and the cookie remains, delete it
    """

    def process_response(self, request, response):
        #if user and no cookie, set cookie
        if request.user.is_authenticated() and not request.COOKIES.get('user'):
            response.set_cookie("user", 'Hello Cookie')
        elif not request.user.is_authenticated() and request.COOKIES.get('user'):
            #else if if no user and cookie remove user cookie, logout
            response.delete_cookie("user")
        return response
2 голосов
/ 04 февраля 2011

Приложение django.contrib.auth .это лучший способ добавить функцию входа на ваш сайт.Это приложениеиспользует приложение и промежуточное программное обеспечение django.contrib.sessions .

Промежуточное программное обеспечение сеанса будет следить за настройкой файла cookie в браузере пользователя.Затем в вашем коде это означает, что вам нужно будет украсить свои представления, чтобы заставить пользователей войти в систему:

from django.contrib.auth.decorators import login_required

@login_required
def my_view(request):
    ...

Внутри вашего представления у вас будет доступ к

  • request.session, то есть dict, где вы можете хранить данные в течение сеанса
  • request.user, то есть пользователь объект

Советуючитать документы.Документация - одна из лучших частей Django

1 голос
/ 04 февраля 2011

Вы можете реализовать это, используя сессионное промежуточное ПО , не забудьте включить его в своем проекте.Я рекомендую вам использовать django.contrib.auth для управления сессиями.Он управляет сессиями в базе данных, что намного безопаснее, чем просто сохранение имени пользователя в cookie

...