2013-03-15 6 views
0

Я использую MVC4 C# и включил домашнюю службу маркеров безопасности (STS). Пользователь называет фактический веб-адрес, и они пассивно перенаправляются на вход STS. Когда они успешно аутентифицируются, они перенаправляются туда, куда они должны идти, и все они были скопированы по URL-адресу при перенаправлении на sts.STS FederatedPassiveSignout на мобильном устройстве с использованием MVC4 C#

После выхода из системы, мы называем:

this.Session.Abandon(); 
this.Response.Cache.SetCacheability(HttpCacheability.NoCache); 
this.Response.ClearContent(); 

// expires the claims 
FederatedAuthentication.SessionAuthenticationModule.SignOut(); 
FederatedAuthentication.SessionAuthenticationModule.CookieHandler.Delete(); 
WSFederationAuthenticationModule authModule = FederatedAuthentication.WSFederationAuthenticationModule 
Response.Redirect(WSFederationAuthenticationModule.GetFederationPassiveSignOutUrl(authModule.Issuer, authModule.Realm, null)); 

Все, кажется, отлично работает на настольную версию нашего приложения. Пользователь возвращается на страницу входа в систему STS, а URL-адрес показывает wlogin1 (и множество других материалов) и позволит пользователю снова войти в систему без проблем. URL-адрес точно такой же, как когда они были сначала перенаправлены на STS. Совершенно, и это то, чего я хочу.

Теперь, когда на мобильном телефоне, который, кстати, использует тот же самый домен/контроллер/методы, он просто использует jQueryMobile и разные частичные представления, выход из системы выходит на смену, и пользователь возвращается к входу STS. Однако на этот раз URL-адрес показывает только Domain/Controller/Method, который был фактически вызван с мобильного actionLink, используемого для выхода из системы. Когда пользователь снова пытается войти в систему, логин всегда будет неудачным, потому что эта ссылка не подходит для входа в sts.

Мысли о том, как это исправить, или что не так? Пожалуйста, дайте мне знать, если вам потребуются какие-либо разъяснения. Благодаря!

+0

Это похоже на то, что, когда я нажимаю ссылку «Выход», о которой я упоминал выше, в новом браузере (а не в новой вкладке, но в целом новом экземпляре), я перенаправляю в STS просто отлично. Может быть, это как-то связано с убийством сеанса? – RichieMN

+0

Кроме того, при входе на вкладку браузера кажется, что все вкладки имеют доступ, если я ввожу правильный URL-адрес на наш веб-сайт, защищенный STS.GMAIL работает аналогично этому, но любопытно, есть ли способ защитить аутентификацию на определенной вкладке браузера и всего браузера? Благодаря! – RichieMN

ответ

0

Я смог исправить это!

Глядя на заголовки для мобильного сайта он показал: X-Requested-With: XMLHttpRequest Итак, мой выход из системы была предпринята попытка с помощью AJAX и что-то не работает. Это было единственное различие между настольными и мобильными заголовками (помимо пользовательского агента, очевидно). Началось это, как проблема.

В одном из моих мобильных сценариев я добавил следующее в mobileinit. BINGO! Вау, какое легкое решение для такой проблемы путаницы.

$(document).bind("mobileinit", function (event) {    
    $.mobile.ajaxEnabled = false;}); 

Убедитесь, что вы правильно загрузили свои библиотеки! я загрузил свои библиотеки Jquery в следующем порядке:

  1. JQuery
  2. мобильный JQuery файл инициализации (выше материал)
  3. jquerymobile
  4. проверки JQuery
  5. все остальное

Мы используем следующие библиотеки jQuery: jquery 1.9.1 jquery -ui 1.10.3 jquery.mobile 1.3.1 jquery.validate

Надеюсь, это поможет другим!

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

  • Нет связанных вопросов^_^