Blazor应用中的RevalidatingServerAuthenticationStateProvider,但没有身份标识

问题描述 投票:0回答:1

我正在尝试使用cookie authentication without ASP.NET Core Identity构建Blazor服务器端应用程序。我确实设法获得了上述示例下面的身份验证。在我的应用程序中,我跳过了services.AddIdentity,并且应用程序运行至今没有任何问题,我能够登录,注销,确定用户角色和其他角色。

我不太确定我理解的是RevalidatingServerAuthenticationStateProvider类及其服务services.AddScoped<AuthenticationStateProvider, RevalidatingIdentityAuthenticationStateProvider<AppUser>>();

Blazor应用程序需要此服务才能继续与客户端通信,还是仅仅是安全屏障?只要Cookie没有过期,我可以让客户端保持登录状态。如果我需要RevalidatingServerAuthenticationStateProvider服务,如何通过传递的AuthenticationState确认用户有效? (查看索赔或其他内容)。

cookies asp.net-identity blazor blazor-server-side
1个回答
0
投票

最初,创建RevalidatingServerAuthenticationStateProvider的目的是解决Windows身份验证的问题,该问题在单电路连接的生命周期内导致无效的用户,或者甚至是另一个用户。 RevalidatingServerAuthenticationStateProvider的作用是从主机环境中检索身份验证状态,并定期进行验证。

通常,ServerAuthenticationStateProvider是默认的身份验证状态提供程序,由框架自动添加。但是,据我所记得,Steve Anderson在github问题中建议将RevalidatingServerAuthenticationStateProvider与其他身份验证方法一起使用。不确定目前是否已完成,但是我想如果您不使用Windows身份验证,则可以坚持使用ServerAuthenticationStateProvider。如果使用Blazor WebAssembly,则应手动实现AuthenticationStateProvider提供程序。

如何通过传递的AuthenticationState确认用户是否有效

如果您的身份验证机制不是Windows身份验证,并且声明主体对象确实存在(您可以将身份验证状态提供者注入到您的组件中,检索身份验证状态对象,获取ClaimsPrincipal对象,并验证用户是否已通过身份验证。足够),那么您的用户肯定是有效的。同样,问题出在Windows身份验证上。

© www.soinside.com 2019 - 2024. All rights reserved.