В моем приложении я хочу отключить пользователя после периода бездействия. Пользователи регистрируются в своей учетной записи Google.ASP.NET MVC - Automatic Logoff
В файле Web.config
я поставил <sessionState mode="InProc" timeout="10" />
под номером <system.web>
, однако через 10 минут пользователь не вышел из системы.
Еще одна вещь, которую я бы хотел, чтобы автоматический журнал отключился, чтобы выполнить кусок кода, прежде чем завершить выход из системы. Этот код просто обновляет поле в таблице базы данных. Я не хочу использовать JavaScript, потому что я хочу, чтобы автоматический журнал отключился, если пользователь переходит от веб-сайта.
EDIT
Код внутри Startup.Auth.cs
по просьбе @Igor
using System;
using Microsoft.AspNet.Identity;
using Microsoft.AspNet.Identity.Owin;
using Microsoft.Owin;
using Microsoft.Owin.Security.Cookies;
using Microsoft.Owin.Security.Google;
using Owin;
using StudentLive.Models;
namespace StudentLive
{
public partial class Startup
{
// For more information on configuring authentication, please visit http://go.microsoft.com/fwlink/?LinkId=301864
public void ConfigureAuth(IAppBuilder app)
{
// Configure the db context, user manager and signin manager to use a single instance per request
app.CreatePerOwinContext(ApplicationDbContext.Create);
app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
app.CreatePerOwinContext<ApplicationSignInManager>(ApplicationSignInManager.Create);
// Enable the application to use a cookie to store information for the signed in user
// and to use a cookie to temporarily store information about a user logging in with a third party login provider
// Configure the sign in cookie
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))
}
});
app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);
// Enables the application to temporarily store user information when they are verifying the second factor in the two-factor authentication process.
app.UseTwoFactorSignInCookie(DefaultAuthenticationTypes.TwoFactorCookie, TimeSpan.FromMinutes(5));
// Enables the application to remember the second login verification factor such as phone or email.
// Once you check this option, your second step of verification during the login process will be remembered on the device where you logged in from.
// This is similar to the RememberMe option when you log in.
app.UseTwoFactorRememberBrowserCookie(DefaultAuthenticationTypes.TwoFactorRememberBrowserCookie);
// Uncomment the following lines to enable logging in with third party login providers
//app.UseMicrosoftAccountAuthentication(
// clientId: "",
// clientSecret: "");
//app.UseTwitterAuthentication(
// consumerKey: "",
// consumerSecret: "");
//app.UseFacebookAuthentication(
// appId: "",
// appSecret: "");
app.UseGoogleAuthentication(new GoogleOAuth2AuthenticationOptions()
{
ClientId = "XXXXXXXXXXXXXXXXXXXXXXXXXXXX",
ClientSecret = "XXXXXXXXXXXXXXXXXXXX"
});
}
}
}
состояния сеанса не состояние аутентификации. Это две совершенно разные вещи. Сессия - это способ сохранения состояния сеанса, причем сеанс является взаимодействием с клиентом с сайтом. Аутентификация - это тот, кто известен клиенту. Поэтому модификации этого параметра в web.config не влияют на аутентифицированное состояние клиента. – Igor
Если вам нужна дополнительная помощь, вам нужно будет указать, как вы аутентифицируете своих пользователей, я предполагаю, что вы используете существующую библиотеку или встроенный провайдер. Если нет, вам придется предоставить код, который вы до сих пор делаете. – Igor
@Igor Пользователи аутентифицируются с использованием своих учетных записей Google. Visual Studio 2013 предоставляет код для обработки входных данных внешнего поставщика в файле 'Startup.Auth.cs', а' AccountController' уже имеет код, который обрабатывает внешний журнал. Мне не нужно было выполнять какие-либо реальные настройки с этим кроме предоставления моих «ClientId» и «ClientSecret». – RoyalSwish