如何正确实现服务器端blazor自定义授权提供程序

时间:2020-03-10 19:37:44

标签: c# blazor claims-based-identity blazor-server-side iprincipal

我正在尝试在服务器端的blazor项目中实现基本的自定义Auth提供程序,但是我在正确实现'IsAuthenticating'属性时遇到了一些困难。

我以该站点为起点,但是如果将'IsAuthenticating'设置为true,则会引发错误(更具体地说,当我从GetAuthenticationStateAsync()返回null时)。 https://gunnarpeipman.com/client-side-blazor-authorizeview/

具体来说这行代码:

if(IsAuthenticating)
    {
        return null; <---- This line throws error
    }
    else if(IsAuthenticated)
    {
        identity = new ClaimsIdentity(new List<Claim>
                    {
                        new Claim(ClaimTypes.Name, "TestUser")

                    }, "WebApiAuth");
    }
    else
    {
        identity = new ClaimsIdentity();
    }

抛出的确切错误是:

NullReferenceException: Object reference not set to an instance of an object.
   Microsoft.AspNetCore.Components.Authorization.AuthorizeViewCore.OnParametersSetAsync()

我不想让堆栈跟踪变得混乱。

这可以实现吗?如果可以,怎么实现?

0 个答案:

没有答案