2015-02-05 2 views
0

Я создаю приложение MVC5, начиная со стандартного шаблона, созданного VS2013. Это Identity 2.0.ASP.Net MVC5 Identity 2.0 Как долго пользователь остается аутентифицированным?

Просто используя параметр «Отдельные учетные записи пользователей» для моей базы данных SQL Server.

Это может быть неправильный термин, но: как долго авторизация пользователя в cookie остается действительной?

Инструменты Chrome показывают, что «.AspNet.ApplicationCookie» для моего домена истекает «Когда сеанс просмотра заканчивается».

MSDN говорит (если я на нужной странице) «По умолчанию куки аутентификации остается в силе для сеанса пользователя.»

Что делать, если веб-сервер будет перезапущен, когда пользователь находится вдали от своего браузера, а затем хиты обновления, они все еще аутентифицированы?

У меня есть все мои контроллеры и контроллеры api, заблокированные с помощью [Авторизовать], кроме входа.

При создании ajax-звонков из Angularjs мне нужно будет обрабатывать Not Authorized и перенаправить пользователя обратно для входа?

Извините за мое невежество, но этот членский состав занял столько раз, что большинство блогов/ответов, похоже, ссылаются на настройки web.config, которых у меня нет.

Мой web.config содержит следующее:

<system.web> 
    <authentication mode="None" /> 
    <compilation debug="true" targetFramework="4.5.1" /> 
    <httpRuntime targetFramework="4.5.1" /> 
    </system.web> 
    <system.webServer> 
    <modules> 
     <remove name="FormsAuthentication" /> 
    </modules> 

ответ

2

На самом деле истекает время куков, установленных на классе Startup.Auth.cs в папке App_Start.

app.UseCookieAuthentication(new CookieAuthenticationOptions 
{ 
    AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, 
    LoginPath = new PathString("/Account/Login"), 
    Provider = new CookieAuthenticationProvider 
    { 
     // Enables the application to validate the security stamp when the user logs in. 
     // This is a security feature which is used when you change a password or add an external login to your account. 
     OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
      validateInterval: TimeSpan.FromMinutes(30), 
      regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager)) 
    }, 
    ExpireTimeSpan = TimeSpan.FromHours(8), 
    SlidingExpiration = true 
}); 

«validateInterval» облегчает обновление куки истекает время, если пользователь выполняет длинную задачу, которая позволит избежать пользователя выхода из середины операции.

Веб-сайт перезагрузки не вышел из системы, я протестировал этот веб-сайт перезапуска, размещенный на лазурных веб-сайтах.

До тех пор, пока вы используете действия контроллера по умолчанию и маршрутизацию по умолчанию mvc, пользователи, не прошедшие проверку подлинности, будут перенаправлены на страницу входа, указанную в приведенном выше разделе кода «LoginPath».

Но одностраничные приложения ведут себя по-другому, если мы используем разные плагины маршрутизации, в этом случае нам нужно сделать некоторую работу, чтобы получить правильный URL-адрес перенаправления. (Е, г: угловая для обработки маршрутизации)

Обновлено

На самом деле нам нужно беспокоиться только о returnUrl, потому что, когда мы используем http://www.someDomain.com/#/assessments/list/invite типа url, returnUrl должен быть #/оценки/список/пригласить, то пользователь будет выведен из системы, но при повторном входе в систему будет перенаправлен в правильный раздел. Я улавливаю хэш-часть Url и назначаю ее returnUrl на стороне клиента в Login.cshtml.

<script type="text/javascript"> 
    document.getElementById('ReturnUrl').value = window.location.hash; 
</script> 

Это решит проблему.

+0

Спасибо. В угловом режиме я использую разрешение ui-router на ресурсе и ошибки ловушки в $ rootScope. $ On ('$ stateChangeError'. Похоже, что ресурс xhrrequest дает $ stateChangeError код ошибки 0, когда сайт не работает. В противном случае допустимые http-коды. это вы справлялись с этим? – JohnWrensby

+0

Обновленный ответ. – DSR

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