2013-08-13 3 views
0

Я понимаю, что когда пользователь регистрируется в MVC webapp (когда исполняемый файл выполняет FormsAuthentication.SignIn(..)), этот пользовательский получатель куки-файл и продолжает работать с сайтом с этим файлом cookie.Как сделать MVC для входа вошедшего в систему пользователя?

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

Я считаю, что решение этой проблемы находится где-то близко, однако, более nethier googling и не копается в классах MVC Forms Authentication, мне не помогло ни с кем работать.

Так как же я принудительно подписать последнюю пользователя информацию для входа (я считаю, что это печенье хранится внутри веб-сервера, я мог бы быть неправильно), когда что пользователь successefully пытается войти в систему где-то новое место?

+0

Cookies хранятся на стороне клиента, а не на сервере –

+0

@HarisHasan, как в этом случае сервер знает, какой файл cookie действителен, а какой нет? – AgentFire

+0

, так как они имеют срок годности –

ответ

0

Единственный способ, которым вы можете это сделать, заключается в сохранении входа пользователя в информацию в таблице. Поэтому, когда пользователь пытается снова войти в систему, вы можете проверить, что он зарегистрирован в каком-то другом месте, запросив таблицу. Как только пользователь выйдет из системы, удалите строки из таблицы.

Помните, что вы не сможете ничего сделать с помощью печенья. Куки-файлы будут просто содержать билет проверки подлинности формы, который будет использоваться модулем аутентификации, чтобы проверить, проверен ли приходящий запрос или нет. А так как звонки без гражданства, вы не можете ничего решили просто посмотрев на печенье

1

Вы должны реализовать

Application_AuthenticateRequest 

в файле global.asax в подтверждение того, что идентификатор пользователя по-прежнему верен. например вам необходимо отслеживать всю сессию, связанную с пользователем, и какие клиенты он использовал. Затем вы можете ответить сбросом cookie в указанном методе, если вы хотите вывести пользователя.

+0

Невозможно реализовать его, поскольку я не могу найти определение виртуального метода. – AgentFire

+0

Это не переопределение, вам просто нужно определить эту функцию. См: класс 'MvcApplication общественности: System.Web.HttpApplication { защищен недействительным Application_Start() { ...... } защищен недействительным Application_AuthenticateRequest() { ...... } } ' Вы не переопределяете Application_Start. – LunicLynx

Смежные вопросы