C# 正在Blazor服务器中获取当前Windows用户以进行AD身份验证
我想用Blazor服务器创建一个intranet应用程序,登录的windows用户在访问站点时会根据“经典”广告自动获得身份验证。比如单点登录。我的问题是无法访问当前Windows用户 我尝试通过C# 正在Blazor服务器中获取当前Windows用户以进行AD身份验证,c#,active-directory,single-sign-on,blazor-server-side,.net-core-3.1,C#,Active Directory,Single Sign On,Blazor Server Side,.net Core 3.1,我想用Blazor服务器创建一个intranet应用程序,登录的windows用户在访问站点时会根据“经典”广告自动获得身份验证。比如单点登录。我的问题是无法访问当前Windows用户 我尝试通过HttpContextAccessor访问,但用户为空。这是我的测试代码。稍后,我计划使用此doku中的代码进行身份验证: 这是正确的方法吗?还是我必须编写一个小型Blazor wasm应用程序,通过信号器连接将其移交 public partial class Counter { protect
HttpContextAccessor
访问,但用户为空。这是我的测试代码。稍后,我计划使用此doku中的代码进行身份验证:
这是正确的方法吗?还是我必须编写一个小型Blazor wasm应用程序,通过信号器连接将其移交
public partial class Counter
{
protected override void OnInitialized()
{
username = HttpContextAccessor.HttpContext.User.Identity.Name;
if (String.IsNullOrWhiteSpace(username))
{
username = "user = null";
}
}
private int currentCount = 0;
private void IncrementCount()
{
currentCount++;
}
[Inject]
private IHttpContextAccessor HttpContextAccessor { get; set; } = default!;
private string username = default!;
}
I ofc添加了
服务。AddHttpContextAccessor()
到startup.cs
如果我理解正确,您可以在IIS服务器上启用windows身份验证在visual studio的设计期间,在项目属性->调试下,启用windows身份验证 然后,可通过以下方式使用该标识:
var authState = await authenticationStateTask;
var user = authState.User;
if (user.Identity.IsAuthenticated)
..etc
是的,你理解得对。谢谢我在“将身份验证状态作为级联参数公开”下尝试了这段代码,并选中了属性->调试下的启用windows身份验证。我把razor代码放在index.razor中。我错过什么了吗?但还是什么都没有。即使我在本地调试模式下运行也不行。user.Identity.Name始终为null,Identity.IsAuthenticated为false。我不想留下“半途而废的答案”,但由于我没有多少空闲时间等等。。。看看这篇文章:我解决了它。我将windows身份验证设置为true,但忘记关闭匿名身份验证。