我正在尝试获取本地用户,但没有返回。
- 网络应用程序接口
- 互联网信息服务(10)视窗10
我的IIS已启用:
- 视窗
- 基本型
- 匿名
Visual Studio 2017 C# .net语言开发工具包
我已经尝试标记Web配置:
<authorization>
<allow users="?" />
</authorization>
AND
<identity impersonate="false" />
<authentication mode="Windows" />
WebApi代码
[HttpGet]
[Authorize]//I already tried [AllowAnonymous]
public User Get()
{
System.Net.NetworkCredential SystemCredential = (System.Net.NetworkCredential)ADUtil.SystemCredential();
string login = HttpContextUtil.Request.LogonUserIdentity.Name;
error here, login return 'NT AUTHORITY\IUSR'.
}
2条答案
按热度按时间ctehm74n1#
你不可能在一个应用程序中混合不同的身份验证模式而不陷入混乱。你必须选择一种并坚持使用它。
AllowAnonymous
属性允许您访问特定的控制器而无需验证。它们是否经过验证取决于您的验证方法。它通常用于访问登录页面,但也可以用于您不需要限制访问的站点区域。最简单的方法可能是禁用IIS中除“Windows”之外的所有内容
3phpmpom2#
正如前面提到的here,如果你想允许用户匿名请求和其他用户使用windows身份验证,你最好的方法是为每个
AuthenticationScheme
提供两个不同的子路径,例如为匿名请求/anonymous/{controller}/{action}
定义一个路由,为windows身份验证请求/windows/{controller}/{action}
定义一个路由。因此,你不必双重实现控制器,但缺点是您必须为同一个模块运行两个连接。