Как создать две разные сессии для обычных пользователей и администраторов, использующих экспресс-сессию? - PullRequest
1 голос
/ 30 апреля 2019

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

Я думал, что эта проблема возникла из-за одного сеанса, и я попытался разделить на два разных сеанса, как,

//manage session for normal user
app.use('/', session({
    key: USER_SESS_NAME, 
    resave: false,
    saveUninitialized: false,
    secret: SESSION_SECRET,
    cookie: {
        expires: 600000
    }
}));


//manage session for admin
app.use('/admin', session({
    key: ADMIN_SESS_NAME, 
    resave: false,
    saveUninitialized: false,
    secret: SESSION_SECRET,
    cookie: {
        expires: 600000
    }
}));


Кроме того, все маршруты для обычного пользователя начинаются с '/' и дляadmin они начинаются с '/ admin', поэтому я разделяю сессии, как указано выше.

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

1 Ответ

0 голосов
/ 30 апреля 2019

Используйте один сеанс для всех типов пользователей. Наилучшим способом будет использование типа учетной записи в сеансе для разделения пользователей.

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

Формат должен выглядеть следующим образом:

secret: YOUR_SECRET.usertype

, чтобы вы могли разделить его точкой и определить тип пользователя. Таким образом, у вас будет один сеанс с типом пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...