繁体   English   中英

Blazor 服务器如何加密 javascript 中的字符串并在 razor 组件中读取结果

[英]Blazor Server how to encrypt string in javascript and read result in razor component

我需要使用简单的 _Layout.cshtml 中的 javascript 检索字符串保存

localStorage.setItem("MyString", strngValue);

并在 Razor 组件中检索该值。 我在呈现任何内容之前从外部服务接收值,但如果我尝试检索它,我会得到加密错误:

    var _savedString = await ProtLocalStore.GetAsync<string>("MyString");
    string SavedString = _savedString.Success ? _savedString.Value : "";

错误出现在 await... GetAsync... 语句。

如果我在应用程序选项卡中检查 Chorme 或 Edge DevTools,我注意到我保存的字符串没有加密,所以我猜问题是当 Blazor Razor 组件读取它时,它无法解密未加密的内容这是预期的。

任何帮助表示赞赏。

Since I don't know what kind of encryption is used in Blazor Server I resolved saving my Firebase Token that is a string in a cookie from the layout with a simple call to a javascript function found in Stackoverflow. 一旦我从 Firebase 获得授权,但这可以用于任何 cookie。

请注意,cookies 的值未加密,因此任何人都可以在 DevTools 中看到它们!

  // cookie
  setCookie('tokenfb', currentToken, 7);

setCookie function 与其他功能一起加载到我的 common.js 中:

// Save Cookie
function setCookie(cname, cvalue, exdays) {
    var d = new Date();
    d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
    var expires = 'expires=' + d.toUTCString();
    document.cookie = cname + '=' + cvalue + ';' + expires + ';path=/';
 }

最后在我的 Blazor 组件中,我有:

@inject IHttpContextAccessor _HttpContextAccessor

@code{

private string Tokenfb { get; set; }
private string cookieContent { get; set; }

protected override async Task OnAfterRenderAsync(bool firstRender)
{
    if (firstRender)
    {
        // other code
        await LoadStateAsync();
        StateHasChanged();
        // other code
    }
}

private async Task LoadStateAsync()
{
    // other code

    // token FBCM
    var context = _HttpContextAccessor.HttpContext;
    if (context != null)
    {
        var cookies = context.Request.Cookies;
        var _tokenfb = cookies["tokenfb"];
        Tokenfb = _tokenfb.ToString();
    }
}
} // closing @code

代码的 rest 与 cookie 没有任何关系,但现在我有了我的字符串,可以根据需要使用它。

希望它可以帮助别人。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM