Asp.Net Core 3.1 Cookie 未附加 Razor 页面 C#

2024-04-19

Cookie 没有使用以下代码附加到页面,我尝试将 IsEssential 添加到选项中,但它不起作用。使用 Asp.Net Core 3.1 Razor 页面。这是我的大部分startup.cs 和附加的cookie 代码。

启动.cs

 public void ConfigureServices(IServiceCollection services)
        {
            services.Configure<CookiePolicyOptions>(options =>
            {
                // This lambda determines whether user consent for non-essential cookies is needed for a given request.
                options.CheckConsentNeeded = context => true;
                options.MinimumSameSitePolicy = SameSiteMode.None;
            });
services.AddRazorPages();
            services.AddMvc(config =>
            {
                var policy = new AuthorizationPolicyBuilder()
                                 .RequireAuthenticatedUser()
                                 .Build();
                config.Filters.Add(new AuthorizeFilter(policy));
            });
services.AddHttpContextAccessor();
            services.TryAddSingleton<IActionContextAccessor, ActionContextAccessor>();
            services.AddSignalR();
            services.AddControllers().AddNewtonsoftJson();
            services.AddControllersWithViews().AddNewtonsoftJson();
            services.AddRazorPages().AddNewtonsoftJson();


}
 public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler("/Error");
            }

            app.UseRequestLocalization();
            app.UseStaticFiles();
            app.UseCookiePolicy();
            app.useAuthentication();
            app.UseRouting();
            app.UseAuthorization();
            app.UseEndpoints(endpoints =>
            {
                endpoints.MapRazorPages();
                endpoints.MapControllers();
            });

        }

添加cookie

            string key = "Cookie";
            var cookieValue = Request.Cookies[key];
            if(cookieValue == null)
            {
                string value = "true";
                var cookieOptions = new CookieOptions()
                {
                    Path = "/",
                    HttpOnly = false,
                    IsEssential = true,
                    Expires = DateTime.Now.AddDays(1),
                };
                HttpContext.Response.Cookies.Append(key, value, cookieOptions);
            }

建议添加 IsEssential 来覆盖 CookiePolicy,但这并没有解决任何问题。 Devtools 应用程序仅显示 .AspNetCore.Identity.Application 和 .AspNetCore.Antiforgery cookie。

编辑: 通过改变解决了

 services.Configure<CookiePolicyOptions>(options =>
            {
                // This lambda determines whether user consent for non-essential cookies is needed for a given request.
                options.CheckConsentNeeded = context => true;
                options.MinimumSameSitePolicy = SameSiteMode.None;
            });

to

    services.ConfigureApplicationCookie(options =>
    {
        // Cookie settings
        options.Cookie.HttpOnly = true;
        options.ExpireTimeSpan = TimeSpan.FromMinutes(5);

        options.LoginPath = "/Identity/Account/Login";
        options.AccessDeniedPath = "/Identity/Account/AccessDenied";
        options.SlidingExpiration = true;
    });

我认为你的startup.cs中缺少一行

app.UseAuthentication();

它将身份验证中间件添加到您的应用程序中。 你必须在之前调用它app.UseAuthorization();

所以它会这样显示:

app.UseRequestLocalization();
        app.UseStaticFiles();
        app.UseCookiePolicy();
        app.UseRouting();
        app.UseAuthentication();
        app.UseAuthorization();
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapRazorPages();
            endpoints.MapControllers();
        });

如果您按照中的说明进行操作它应该工作正常。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Asp.Net Core 3.1 Cookie 未附加 Razor 页面 C# 的相关文章

随机推荐

  • 为什么大多数 API 分页不依赖 HTTP Range 标头?

    我搜索了很多 但找不到这个问题的好的答案 作为 HATEOAS 爱好者 我认为这个标题非常适合 Range item 1 20 100 在HTTP规范中 我不明白一些 矛盾 范围单位可以接受 其他范围单位 range unit bytes
  • Twig form_theme_self自定义单独字段

    我有一个视图 我试图覆盖每个单独字段的表单主题http symfony com doc current cookbook form form customization html how to customize an individual
  • 谁给了 SWI-Prolog 幽默感?

    谁给了 SWI Prolog 幽默感 Welcome to SWI Prolog threaded 64 bits version 7 3 35 SWI Prolog comes with ABSOLUTELY NO WARRANTY Th
  • 设置了 LARGEADDRESSAWARE 标志的应用程序获得的虚拟内存较少

    我有一个 32 位应用程序 由一个 EXE 和多个 DLL 组成 EXE 是用 LARGEADDRESSAWARE标志设置 所以我预计在 64 位操作系统上我应该获得 4 GB 的用户地址空间 但在某些 64 位 Win 7 系统上 我只能
  • 用于测试 Schema.org 标记的工具[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 有谁知道测试 Schema org 的好工具 http schema org http schema org 标记 Google Rich
  • 使用 Excel 进行地址、字符串操作

    我目前正在对城市地址上的一个非常大的数据源进行一些工作 其中数据看起来像这样 source 不 174 史密斯街 174 号 5 楼 史密斯街 174 号 我使用了一个函数来删除在extendoffice 上显示的重复项 https www
  • 对 matplotlib 图中两点之间的区域进行阴影处理

    如何在图中的两点之间添加阴影区域绘图库 http matplotlib org index html plot 在示例中绘图库 http matplotlib org index html下面的绘图中 我使用手动添加了阴影黄色区域Skitc
  • 如何访问我的开发人员创建的 EC2?

    我的开发人员在 AWS 上创建了一个 EC2 实例 我希望能够通过我自己的仪表板访问它 我所做的是 作为 root 用户 我为我和他创建了一个 IAM 帐户 并将我们俩分配到一个名为 PowerUsers 的组 我创建了一个组织单位并将他的
  • 使用javascript对堆栈元素进行排序

    我试图理解使用递归对堆栈元素进行排序http www geeksforgeeks org sort a stack using recursion http www geeksforgeeks org sort a stack using
  • 替代使用跨度? [复制]

    这个问题在这里已经有答案了 这是一个例子 span Hello span span world span span this span span is span span a span span sentence span 基本上 我有一个
  • 如何使用 WndProc 作为类函数[重复]

    这个问题在这里已经有答案了 我正在尝试创建一个包含 WndProc 的类 但出现错误 Error 2 error C2440 cannot convert from LRESULT stdcall Client HWND UINT WPAR
  • 如何在 WPF 应用程序中捆绑 View、ViewModel 和 DataTemplate 以便于重用?

    情况 我想创建一个由 ViewModel 驱动的灵活应用程序 基本流程是这样的 设计主ViewModel 创建一个 UserControl 作为视图 并为主 ViewModel 创建一个 DataTemplate 以选择该视图 如果有子组件
  • 使用 Django 模型表单 + 表单向导 + Crispy - 不进行第二步

    我对 django 中的表单相当陌生 我的问题是我有一些非常大的模型 我必须将它们分解成一系列较小的表单以供用户填写 所以我一直在尝试使用脆皮表单 昨天在 YouTube 上观看 Mike Hibberts 教程 Python Django
  • 使用 Python (OpenCV) 中的霍夫线变换从模拟时钟读取时间

    我一直在尝试编写一个程序 在图片上找到钟面 然后继续从中读取时间 定位效果相当好 但阅读时间 不是那么多 cv2 HoughLines 函数返回线条所在的角度 从图像顶部开始测量 以及它们与图像左上角的距离 经过一些调整后 我成功地说服我的
  • 仅从 Internet Explorer 上的文件输入中获取文件名

    我只需要从 HTML 输入文件返回文件名
  • 是否可以将 getopts 与位置参数混合使用?

    我想设计一个 shell 脚本作为几个脚本的包装器 我想指定参数myshell sh using getopts并将其余参数以相同的顺序传递给指定的脚本 If myshell sh执行方式如下 myshell sh h hostname s
  • Android @Override 错误

    今天我终于让我的 facebook 实现工作起来了 当我开始在我的应用程序中实现它时 我通过 Override 收到以下错误 类型的 onComplete Bundle 方法 FBConnectionActivity LoginDialog
  • Windows:如何测试高dpi下的UI?

    我想测试我的应用程序的反应high dpi 设置 我指的不仅仅是 120dpi 我想测试更高的 dpi 设置 例如 150dpi 300dpi 600dpi 1000dpi 1200dpi 我的开发机器的显卡无法达到 300dpi 甚至 1
  • Angular @Input getter/setter 和非原始值

    问题 我希望能够在每次子组件绑定的对象中的属性发生更改时调用一个函数 但是 即使可以明显看到绑定的输入属性正在更新 setter 也只会被调用一次 这一切都是因为需要将子组件绑定到其父组件属性 而父组件属性恰好是具有深度嵌套属性的复杂对象
  • Asp.Net Core 3.1 Cookie 未附加 Razor 页面 C#

    Cookie 没有使用以下代码附加到页面 我尝试将 IsEssential 添加到选项中 但它不起作用 使用 Asp Net Core 3 1 Razor 页面 这是我的大部分startup cs 和附加的cookie 代码 启动 cs p