我想支持 JWT,所以我需要保留令牌;有什么设施可以访问这个吗?或者我们现在应该注册自己的 javascript 函数来访问此功能吗?
编辑:根据建议,我尝试使用 JS 互操作:
<script>
localStorage.setItem("key1", "key1data");
Blazor.registerFunction("readStorage", (key) => {
return localStorage.getItem(key);
});
</script>
@if (jwtKey == null)
{
<div class="login-panel">
<p>JWT not loaded</p>
</div>
}
else
{
<div class="login-panel">
<p>@jwtKey</p>
</div>
}
@functions {
public RenderFragment Body { get; set; }
string jwtKey;
protected override async Task OnInitAsync()
{
jwtKey = RegisteredFunction.Invoke<string>("readStorage", "key1");
if (jwtKey == null)
{
jwtKey = "Unknown";
}
}
}
但这会导致diag中出现WASM错误:
WASM:
[Microsoft.AspNetCore.Blazor.Browser.Interop.JavaScriptException]
找不到名为“readStorage”的注册函数。 WASM:
错误:找不到名为“readStorage”的注册函数。
仅供参考,它位于 Blazor VS 样板项目的 MainLayout.cshtml 中。
(如果合适的话可以提出一个新问题;不过与这个问题有些相关)
对于 0.1,您需要编写自己的 javascript 互操作。但我相信这是可行的,也许在 0.2 版本中。
或者(如果您不需要会话之间的存储)您可以编写自己的 DI 单例,如下所示:https://github.com/aspnet/samples/blob/master/samples/aspnetcore/blazor/FlightFinder/FlightFinder.Client/Services/AppState.cs https://github.com/aspnet/samples/blob/master/samples/aspnetcore/blazor/FlightFinder/FlightFinder.Client/Services/AppState.cs
Edit
为此有一个公开的 PR,所以确实应该很快就会出现:https://github.com/aspnet/Blazor/pull/205 https://github.com/aspnet/Blazor/pull/205
Edit20.2 已经完成,但还没有本地存储。与此同时,我为此开发了一个包:Blazor扩展 https://github.com/floreseken/BlazorExtensions也在 nuget 上
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)