使用Identity2创建了一个mvc5应用程序,如何设置它以使用会话cookie,因此当浏览器关闭时它们会过期

埃里克·布朗-加州

使用Google登录名创建了一个Identity2的mvc5应用程序(几乎是空的应用程序,并且已启用了Google的功能)

我如何设置它以使用会话cookie,以便它们在浏览器关闭时过期。该应用程序将由可能会互换座位的学生使用,因此我需要登录名在浏览器关闭时到期。

我读了一篇SO文章,暗示这是默认设置,但是当我关闭浏览器并返回该站点时,它会记住Google登录信息。

编辑

抱歉让所有人破灭,但这不是重复的。

更改了假定的“答案”中的设置后,它在Chrome中得以重现,并且还可以在IE中得以重现。这是Asp.net Identity 2 + Google登录问题,而不是Chrome问题。

编辑

为安装帮助添加启动Auth文件

using System;
using System.Configuration;
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 StudentPortalGSuite.Models;

namespace StudentPortalGSuite
{
    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));

            // per https://docs.microsoft.com/en-us/aspnet/mvc/overview/security/create-an-aspnet-mvc-5-app-with-facebook-and-google-oauth2-and-openid-sign-on - EWB
            //dev-jcsn email
            app.UseGoogleAuthentication( new GoogleOAuth2AuthenticationOptions()
            {
                ClientId     = "...",
                ClientSecret = "..."


            } );
            //});
        }
    }
}

编辑我要解决的用例是,由于我们的应用程序在教室中使用,该学生A关闭浏览器而不是注销,然后下一个用户尝试登录。按现状,它们将自动登录到用户A的帐户中。

当重定向到登录页面时,我还想办法100%注销用户,但是我尝试过的所有方法都行不通。

埃里克·布朗-加州

在LogIn控制器顶部调用此方法可以解决此问题。

  Request.GetOwinContext().Authentication.SignOut( DefaultAuthenticationTypes.ApplicationCookie );// https://stackoverflow.com/questions/28999318/owin-authentication-signout-doesnt-seem-to-remove-the-cookie - stralos s answer
  Request.GetOwinContext().Authentication.SignOut( DefaultAuthenticationTypes.ExternalCookie );

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章