MVC Autologin с другого веб-сайта

У меня есть 2 веб-приложения MVC, назовем их MVC_A и MVC_B.

Я хочу иметь возможность войти в MVC_A по ссылке, которая находится на MVC_B.

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

Имейте в виду, что для обоих приложений у меня разные таблицы пользователей (с хешированными паролями).

Возможно ли это сделать? И если да, то не могли бы вы сказать мне, каким путем мне нужно идти, чтобы сделать это?


person Kaizer    schedule 04.02.2015    source источник


Ответы (1)


Если вы используете одну и ту же базу данных или можете получить доступ к базе данных MVC_A из MVC_B, я предлагаю следующее:

  1. Измените все свои ссылки со страниц MVC_A на страницы MVC_B с http://MVC_B/etc... на /redir?url=. ...&идентификатор_сеанса=...
  2. На странице redir сгенерируйте уникальный SessionID в базе данных, назначенный текущему имени пользователя. Вы должны использовать таблицу, подобную: [ID, UserName, SessionID (может быть, Guid?), Used]. Затем перенаправьте на страницу MVC_B со сгенерированным SessionID в QS (например: http://MVC_B/url?sessionid=...).
  3. В MVC_B, когда у вас есть идентификатор сеанса в QS, прочитайте имя пользователя из базы данных на основе только что полученного идентификатора сеанса, отметьте идентификатор сеанса как used (чтобы его нельзя было использовать снова) и аутентифицируйте его (если у вас есть пользователь с тем же именем пользователя в базе).
person SmartDev    schedule 04.02.2015
comment
спасибо за вашу информацию. Я думал о таблице, в которой содержится некоторая информация о пользователе, поэтому я понимаю ваш подход. Но как я могу аутентифицироваться в MVC_A только с именем пользователя? - person Kaizer; 04.02.2015
comment
вам следует вручную создать FormsAuthenticationTicket, а затем файл cookie аутентификации. Затем добавьте его с помощью Response.Cookies.Add(cookie). См. codeproject.com/Articles/13872/ (метод Submit1_Click) о том, как этого добиться. - person SmartDev; 04.02.2015