Как заставить отличные приложения Django на том же субдомене совместно использовать сеансовые куки?

Этот метод создает массив bools, который определяет, какие символы будут сохранены, а какие будут заменены с помощью встроенной функции shuffled.

let string = "Hello playground"
let charsToKeep = string.count / 4
let bools = (Array<Bool>(repeating: true, count: charsToKeep) 
           + Array<Bool>(repeating: false, count: string.count - charsToKeep)).shuffled()

let output = zip(string, bools).map
{
    char, bool in
    return bool ? char : "_"
}

print(String(output))

Редактировать Вышеприведенное не правильно работает с пробелами, но я все равно оставлю это здесь в качестве общего примера.

Вот версия, которая имеет дело с пробелами.

let string = "Hello playground and stackoverflow"
let nonSpaces = string.filter{ [111] != " " }.count

let bools = (Array<Bool>(repeating: true, count: nonSpaces / 4) + Array<Bool>(repeating: false, count: nonSpaces - nonSpaces / 4)).shuffled()

var nextBool = bools.makeIterator()
let output = string.map
{
    char in
    return char == " " ? " " : (nextBool.next()! ? char : "_")
}

print(String(output))

// Hel__ __________ a__ __a____e____w
// ___l_ _l__g_____ _n_ __a_____r__o_
7
задан Fabian Steeg 17 February 2009 в 14:02
поделиться

2 ответа

Я вместо этого советовал бы Вам устанавливать SESSION_COOKIE_NAME к различным значениям для этих двух приложений. Ваши пользователи должны будут все еще войти в систему дважды первоначально, но их сессии не будут конфликтовать - если они войдут в систему приложения A, затем приложения B, и возвратятся к A, то у них все еще будет их сессией.

Совместное использование сессий между экземплярами Django является, вероятно, не хорошей идеей. Если Вы хотите некоторую единую точку входа, изучаете что-то как django-авария. У Вас все еще будет 2 сессии (как Вы должны), но пользователь только войдет в систему однажды.

15
ответ дан 6 December 2019 в 07:52
поделиться

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

  • удостоверьтесь, что два django приложения совместно используют тот же SECRET_KEY
  • удостоверьтесь, что два django приложения совместно используют тот же SeSSON_COOKIE_NAME
  • удостоверьтесь, что SESSION_COOKIE_DOMAIN установлен на что-то, что позволяет этим двум экземплярам совместно использовать cookie. (Если они действительно совместно используют тот же субдомен, Ваша текущая установка прекрасна, вероятно.)
  • удостоверьтесь, что оба экземпляра Django используют тот же бэкенд сессии (та же база данных, тот же каталог файла, та же конфигурация memcached, и т.д.)
  • удостоверьтесь, что что-либо посаженное в сессию имеет смысл в обеих базах данных Django: по крайней мере это будет включать идентификатор пользователя, начиная с использования автора Django, что для запоминания, какой пользователь зарегистрирован.

Однако я на самом деле не попробовал все это, таким образом, можно все еще испытать затруднения!

8
ответ дан 6 December 2019 в 07:52
поделиться
Другие вопросы по тегам:

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