2014-11-06 48 views
0

昨天尝试了googoling整个下午,但也许我无法搜索到罚款,我还没有找到解决方案!MVC4:从窗体切换到窗口验证

我有一个MVC4应用程序在表单身份验证中运行良好,但现在公司的请求是在Windows身份验证中切换身份验证。

我试图简单地更改网络配置并将其设置为Windows身份验证,但是当我开始调试时,用户是空的(User.Identity.Name =“”)。

因此,我试图通过VS模板创建一个新的Intranet Web应用程序,以查看它是否正常工作,它确实如此。我比较了web配置,没有遗漏任何东西,但我无法理解应用程序如何获取用户,因为在这里我发现User.Identity.Name数据是正确的。

所以我错过了一些东西,或者我只是需要添加一些代码? 感谢您的帮助。

-EDIT:我尝试进行会话启动检查,但User.Identity仍然是空的并且未通过身份验证。不明白为什么!

回答

0

步骤1此配置:打开Web.config文件并进行以下修改:

<!— 
<authentication mode="Forms"> 
    <forms loginUrl="~/Account/Login" timeout="2880" /> 
</authentication> 
--> 

<authentication mode="Windows" /> 

步骤2:默认情况下,MVC Apps使用表单身份验证和简单成员资格,因此您需要将其设为'假'才能运行Windows身份验证。

<appSettings> 
    <add key="webpages:Version" value="2.0.0.0" /> 
    <add key="webpages:Enabled" value="false" /> 
    <add key="PreserveLoginUrl" value="true" /> 
    <add key="ClientValidationEnabled" value="true" /> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true" /> 

    <add key="autoFormsAuthentication" value="false" /> 
    <add key="enableSimpleMembership" value="false"/> 

</appSettings> 

步骤3:在解决方案资源管理,然后在属性浏览器中选择项目名称,单击要启用Windows身份验证。

步骤4:在属性Explorer如果你希望你的开发服务器上认证的用户完整的网站,你可以禁用匿名身份验证。

Reference

+0

将“enableSimpleMembership”改为False诀窍!谢谢! – skini82 2014-11-06 10:17:39

0

请验证Windows身份验证

<authentication mode="Windows" /> 
    <authorization> 
     <allow users="yourdomain\someotheruser" /> 
     <deny users="*" /> 
    </authorization> 
+0

如果我把这个在web.config中问我的用户名和密码。我尝试了很多次,但我得到了未经授权的页面。所以我认为我的网站不会让用户。注意:在MVC示例中,APP IE不会要求我输入USER/Password,但我的用户是自动识别的。 – skini82 2014-11-06 09:29:11

+0

是的,你必须输入正确的域名/用户名和密码(你用来登录到你的机器的那个)。对于IE,它具有默认设置“仅在Intranet区域自动登录”。要验证/更改该设置,请转到IE>工具> Internet选项>安全选项卡>自定义级别>将其滚动到最后并查找用户身份验证选项。 – 2014-11-06 12:11:11