Asp.net mvc ASP.Net MVC中的User.Identity.Name为空
完全按照标题 简单地说,在我的HomeController中,我有:Asp.net mvc ASP.Net MVC中的User.Identity.Name为空,asp.net-mvc,iis,Asp.net Mvc,Iis,完全按照标题 简单地说,在我的HomeController中,我有: string Username = User.Identity.Name; 为什么这个值总是空的 我是否需要在web.config中放置一些特殊的内容来实现此值。我已经在VS dev web服务器和windows server 2003 IIS服务器上进行了尝试 它必须是一些简单的东西,IIS中的服务器设置或其他东西,因为代码非常简单,似乎是引用此值的正确方式 很多人肯定是配偶。您需要通过网站验证。这是用于身份验证的名称 你
string Username = User.Identity.Name;
为什么这个值总是空的
我是否需要在web.config中放置一些特殊的内容来实现此值。我已经在VS dev web服务器和windows server 2003 IIS服务器上进行了尝试
它必须是一些简单的东西,IIS中的服务器设置或其他东西,因为代码非常简单,似乎是引用此值的正确方式
很多人肯定是配偶。您需要通过网站验证。这是用于身份验证的名称 你在验证,对吗 这不是一个背景,等等 如果您使用的是股票标准ASP.NET MVC模板(如果我的内存正常),请单击登录链接 更新(因为帖子添加了更多信息/评论) 因此,您需要的是Windows身份验证。我想出了一个好主意。它非常有用(虽然有点旧,但仍然相关)。。看看这个 找到用于Windows身份验证的MVC代码。看看这个 重要的配置设置是
...
<system.web>
...
<authentication mode="Windows"/>
...
</system.web>
...
。。。
...
...
...
您是否已将授权属性附加到您的操作或控制器
public class HomeController : Controller {
[Authorize]
public ActionResult Index() {
string userName = User.Identity.Name;
return View();
}
}
如果您不希望对每个控制器或操作进行授权,则可以在web.config文件中进行全面授权。只要您使用的是Windows身份验证,这项功能就应该有效。如果允许ASP.NET控制身份验证,则无需配置任何IIS设置。然后,它应该可以很好地与您正在运行的任何web服务器配合使用。我不知道或假设你到目前为止尝试了什么,我将尝试在我的答案中完整。首先在web.config中去掉表单身份验证标记。以下所有设置都放置在system.web配置部分
<!--
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" timeout="2880" />
</authentication>
-->
替换为Windows身份验证标记
<authentication mode="Windows" />
然后添加授权标记以拒绝匿名用户的访问。如果用户使用Internet Explorer并从Intranet区域连接,IE将自动登录用户。但是,如果用户是从Internet区域连接的,IE仍然会显示一个登录框,以确保安全。但这些都是可以从IE设置的选项
<authorization>
<deny users="?" />
</authorization>
未经授权单独设置身份验证模式不会强制用户在ASP.NET中进行身份验证。如果您想控制IIS的安全性,我无法帮助您进行IIS设置,但我知道基本上您可以禁用基本身份验证,然后启用集成Windows身份验证,然后禁用匿名登录帐户,这将获得相同或更好的结果
我现在也在做一个MVC项目,我用我的项目测试了上面的设置,效果很好。您不需要Authorize属性,因为配置中有authorization标记。我希望这能对您有所帮助,而不是得到另一个-1。如果您想使用windows身份验证,仅添加一个是不够的
...
<system.web>
...
<authentication mode="Windows"/>
...
</system.web>
...
。。。
...
...
...
您还需要检查MVC项目的自述文件说明,尤其是在运行IIS Express和使用Visual Studio 2012时
见下文:
在IIS Express上托管:
a)将“匿名身份验证”设置为“禁用”。
b) 将“Windows身份验证”设置为 “已启用”。
该属性只是意味着该方法(它所附加的)在运行任何逻辑之前需要授权用户。这和User.Identity.Name的值为空无关。Thx堆,请参阅我上面的评论。正如你所建议的那样添加了这个。然后,我会在该页面上显示一个身份验证web表单。因此,用户需要进行身份验证,但我想无缝地进行验证,也就是说,我们公司环境/lan中的每个人都可以看到此网站上的每个页面,但我公开对他们进行身份验证,但我可以获取他们的用户名。因此,我可以将身份验证方法从表单更改为“集成”,然后允许访问所有内容吗?再次使用Thx。出现身份验证web表单是因为MVC项目中的身份验证模式设置为Forms authentication。您需要在web.config文件中将模式设置为Windows身份验证。在IIS.Pure.Krome中进行更改比在IIS.Pure.Krome中进行更改要简单得多。很遗憾,您贬低了