ASP.NET MVC-自动注销

皇家Swish

在我的应用程序中,我要在一段时间不活动后注销用户。用户使用其Google帐户登录。

Web.config文件中,我放在<sessionState mode="InProc" timeout="10" /><system.web>,但是10分钟后,该用户未注销。

我希望自动注销要做的另一件事是在完成注销之前执行一段代码。此代码仅更新数据库表中的字段。我不想使用JavaScript,因为如果用户离开网站,我希望自动注销能够正常工作。

编辑

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"
            });
        }
    }
}
伊戈尔

您需要修改CookieAuthenticationOptions实例,并提供到期的其他详细信息。

从文档中

  • SlidingExpiration -SlidingExpiration设置为true,以指示中间件在处理超过到期时间超过一半的请求时,只要其具有新的到期时间就重新发行新的cookie。
  • ExpireTimeSpan-控制cookie从创建之日起保持有效的时间。到期信息在受保护的cookie票证中。因此,即使在浏览器清除后将过期的cookie传递到服务器,它也将被忽略。

代码:

app.UseCookieAuthentication(new CookieAuthenticationOptions
{
    // add these lines
    SlidingExpiration = true,
    ExpireTimeSpan = TimeSpan.FromMinutes(10),
    // rest of your code
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ASP.NET MVC-自动注销

来自分类Dev

注销指定用户asp.net mvc

来自分类Dev

ASP NET MVC 的 Onelogin 单点注销

来自分类Dev

无法自动登录asp.net MVC

来自分类Dev

ASP.NET MVC会话到期时注销用户

来自分类Dev

防止用户在asp.net mvc中注销后返回

来自分类Dev

ASP.Net MVC应用程序注销未完全注销

来自分类Dev

MVC 5身份自动注销

来自分类Dev

在ASP.NET MVC中创建自动完成错误

来自分类Dev

ASP.Net MVC-停止自动完成密码

来自分类Dev

jQuery的UI自动完成asp.net MVC无法运行

来自分类Dev

asp.net mvc 4 bootstrap jquery combobox自动完成

来自分类Dev

使用JSON自动完成ASP.NET MVC

来自分类Dev

Asp.net MVC中的“自动完成”文本框

来自分类Dev

ASP.NET MVC 5的自动完成问题

来自分类Dev

在ajax之后自动调用asp.net mvc索引操作

来自分类Dev

ASP.NET MVC 5 DropDownListFor自动完成

来自分类Dev

ASP.NET MVC 中的数据表自动刷新

来自分类Dev

ASP.Net-MVC 5-如果用户离开特定区域,则注销用户

来自分类Dev

ASP.Net MVC 5 w / identity 2.2.0注销不起作用

来自分类Dev

如何在OWIN ASP.NET MVC5中注销用户

来自分类Dev

如何结束会话或在浏览器上注销用户关闭MVC ASP .NET

来自分类Dev

Azure Active Directory将不会使用ASP.NET Core 2.1 MVC注销

来自分类Dev

ASP.Net-MVC 5-如果用户离开特定区域,则注销用户

来自分类Dev

使用asp.net mvc5身份无法注销,发布时刷新了Cookie

来自分类Dev

如何使用 ASP.NET MVC 和实体框架在 C# 中创建注销

来自分类Dev

ASP.Net身份注销

来自分类Dev

Model Validation in asp .net MVC

来自分类Dev

ASP.NET MVC,Actionlink