要实现ASP.NET Core应用程序使用Windows身份验证时,让用户提示输入密码而不是收到403错误,可以通过以下步骤实现:
public void ConfigureServices(IServiceCollection services)
{
// 添加Windows身份验证
services.AddAuthentication(IISDefaults.AuthenticationScheme);
// 其他服务配置
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// 添加Windows身份验证中间件
app.UseAuthentication();
// 其他中间件配置
app.UseRouting();
app.UseAuthorization();
// ...
}
[Authorize]
public class HomeController : Controller
{
// ...
}
节点下的
节点的
子节点的
修改为
。这样,未经身份验证的用户将被重定向到登录页面。
app.Use(async (context, next) =>
{
// 检查是否为未授权请求
if (!context.User.Identity.IsAuthenticated)
{
// 获取请求的路径和查询字符串
var returnUrl = context.Request.Path + context.Request.QueryString;
// 重定向到登录页面,并将返回URL作为参数传递
context.Response.Redirect("/Account/Login?returnUrl=" + returnUrl);
return;
}
await next();
});
这样,当未经身份验证的用户访问受保护的资源时,将被重定向到登录页面,并在登录页面中提示用户输入密码。
请注意,以上代码示例仅作为参考,实际应根据您的应用程序需求进行调整和修改。