微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 ASP Net Core 3.1 中,使用 ajax 时,过期 cookie 不会重定向到登录页面

如何解决在 ASP Net Core 3.1 中,使用 ajax 时,过期 cookie 不会重定向到登录页面

在我的应用程序中,当我的 cookie 过期时,我将重定向到我的帐户/登录页面。但是当我调用 ajax 方法并且 cookie 已过期时,操作返回 401 并且我没有重定向到我的帐户/登录页面...

我在控制器上添加了 [Authorize] 属性

xhr.status 参数返回 401。

示例ajax方法

 $(document).on('click','.ajax-modal',function (event) {
    var url = $(this).data('url');
    var id = $(this).attr('data-content');
    if (id != null)
        url = url + '/' + id;
    $.get(url)
        .done(
            function (data) {
               placeholderElement.html(data);
               placeholderElement.find('.modal').modal('show');
            }
        )
        .fail(
            function (xhr,httpStatusMessage,customErrorMessage) {
                selectErrorPage(xhr.status);
            }
        );
});

我的 ConfigureServices 方法

public void ConfigureServices(IServiceCollection services)
    {
        #region Session
        services.AdddistributedMemoryCache();

        services.AddSession(options =>
        {
            // Set a short timeout for easy testing.
            options.IdleTimeout = TimeSpan.FromSeconds(1000);
            options.Cookie.HttpOnly = true; // permet d'empecher à du code JS d'accèder aux cookies
            // Make the session cookie essential
            options.Cookie.IsEssential = true;
        });
        #endregion

        #region Cookie

        services.AddAuthentication(options =>
                {
                    options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
                })
                .AddCookie(CookieAuthenticationDefaults.AuthenticationScheme,options =>
                {
                    options.Cookie.Name = "TestCookie";
                    options.ExpireTimeSpan = TimeSpan.FromSeconds(10);
                    options.LoginPath = "/Account/login";
                    options.ReturnUrlParameter = CookieAuthenticationDefaults.ReturnUrlParameter;
                    options.Cookie.SameSite = SameSiteMode.Strict;
                });

        #endregion

感谢您的帮助

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。