正如标题所示.
只需在我的HomeController中,我就有:
string Username = User.Identity.Name;
Run Code Online (Sandbox Code Playgroud)
为什么这个值总是空白?
我必须在web.config中放置一些特殊内容才能获得此值.我已经尝试过VS dev web服务器以及Windows Server 2003 IIS服务器.
它必须是简单的东西,在IIS中的服务器设置或其他东西,因为代码是如此简单,似乎是引用此值的正确方法.
多谢
Pur*_*ome 13
当然是伴侣.您需要通过网站进行身份验证.这是用于身份验证的名称.
你在验证,对吧?
这不是一个设置,等等.
如果您使用的是库存标准ASP.NET MVC模板(如果我的内存为我提供服务),请单击LOG IN链接.
那么你所追求的是Windows身份验证.一个快速谷歌搜索想出了这个职位.它非常有用(虽然有点旧,但仍然相关)..检查出来.
使用Windows身份验证的MVC代码找到了更好的帖子.检查一下.
配置设置很重要,是......
...
<system.web>
...
<authentication mode="Windows"/>
...
</system.web>
...
Run Code Online (Sandbox Code Playgroud)
Pri*_*cey 12
如果您想要使用Windows身份验证,仅仅添加是不够的
...
<system.web>
...
<authentication mode="Windows"/>
...
</system.web>
...
Run Code Online (Sandbox Code Playgroud)
您还需要检查MVC项目的自述文件说明,尤其是在IIS Express中运行并使用Visual Studio 2012时.
见下文:
在IIS Express上托管:
在解决方案资源管理器中单击您的项目以选择项目.
如果"属性"窗格未打开,请将其打开(F4).
在项目的"属性"窗格中:
a)将"匿名身份验证"设置为"已禁用".
b)将"Windows身份验证"设置为"已启用".在IIS 7或更高版本上托管:
打开IIS管理器并导航到您的网站.
在"功能视图"中,双击"身份验证".
在Authentication页面上,选择Windows身份验证.如果Windows身份验证不是一个选项,则需要确保在服务器上安装了Windows身份验证.
要在Windows上启用Windows身份验证:
a)在控制面板中打开"程序和功能".b)选择"打开或关闭Windows功能".
c)导航到Internet信息服务>万维网服务>安全性,并确保选中Windows身份验证节点.
要在Windows Server上启用Windows身份验证:
a)在服务器管理器中,选择"Web服务器(IIS)",然后单击"添加角色服务".
b)导航到Web Server> Security并确保选中Windows身份验证节点.
在"操作"窗格中,单击"启用"以使用Windows身份验证.
在"身份验证"页面上,选择"匿名身份验证
在"操作"窗格中,单击"禁用"以禁用匿名身份验证.
如果您不希望对每个控制器或操作进行授权,则可以在web.config文件中进行一揽子授权.只要您使用Windows身份验证,这应该可以正常工作.如果允许ASP.NET控制身份验证,则无需配置任何IIS设置.然后它应该适用于您运行的任何Web服务器.我不知道或假设你到目前为止尝试了什么,我会尽力在答案中完成.首先注意web.config中的表单身份验证标记.以下所有设置都放在system.web配置部分中.
<!--
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" timeout="2880" />
</authentication>
-->
Run Code Online (Sandbox Code Playgroud)
替换为Windows身份验证标记.
<authentication mode="Windows" />
Run Code Online (Sandbox Code Playgroud)
然后添加授权标记以拒绝匿名用户的访问.如果用户正在使用Internet Explorer并从Intranet区域进行连接,则IE会自动登录该用户.但是,如果用户从Internet区域进行连接,为了安全起见,IE仍将显示登录框.但这些是可以从IE设置的选项.
<authorization>
<deny users="?" />
</authorization>
Run Code Online (Sandbox Code Playgroud)
未经授权单独设置身份验证模式不会强制用户在ASP.NET中进行身份验证.如果你想从IIS控制安全性,我对IIS设置无能为力,但我知道你基本上可以禁用基本身份验证,然后启用集成Windows身份验证,然后禁用匿名登录帐户,这将获得相同或更好的结果.
我目前正在研究一个MVC项目,我用我的项目测试了上述设置并且它可以工作.您不需要Authorize属性,因为我们在配置中有授权标记.我希望这对你有所帮助,而不是另一个-1.
您是否已将Authorize属性附加到您的操作或控制器?
public class HomeController : Controller {
[Authorize]
public ActionResult Index() {
string userName = User.Identity.Name;
return View();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
30748 次 |
| 最近记录: |