隐藏

在Blazor服务器端创建和读取cookie

发布:2022/4/26 22:29:22作者:管理员 来源:本站 浏览次数:2359


问题


在Blazor服务器端创建和读取cookie最简单的方法是什么。


似乎所有的解决方案都是针对BlazorWeb组装的,每当我使用这些解决方案时,Response.Cookies.Append(&quot&()和请求。Cookies[]选项不起作用。

回答


我找到了一个很好的解决方案,使用本地存储来解决Blazor服务器端Cookie问题。


首先,使用以下命令获取NuGet Blazored LocalStorage:Install Package Blazored.LocalStorage。我必须更新我的System.Text.Json,从https://www.nuget.org/packages/System.Text.Json/


将以下内容添加到中的Startup.cs:


public void ConfigureServices(IServiceCollection services)

{

   services.AddBlazoredLocalStorage();   // local storage

   services.AddBlazoredLocalStorage(config =>

       config.JsonSerializerOptions.WriteIndented = true);  // local storage

}


在Razor页面上(我使用Index.Razor进行测试):


@page "/"

@inject Blazored.LocalStorage.ILocalStorageService localStorage


<button @onclick="HandleSubmit">Create Cookie</button>  @* Create your cookie *@


@code{

   public async Task HandleSubmit()

   {

       await localStorage.SetItemAsync("cookieName", "Jason Bourne");

   }


   protected override async Task OnAfterRenderAsync(bool firstRender)

   {

       var cookieContent = await localStorage.GetItemAsync<string>("cookieName");


       if (cookieContent == null)

       {

           Console.WriteLine("Cookie is blank");

       }

       else

       {

           Console.WriteLine("We have a cookie with contents: " + cookieContent);

       }

   }

}