【问题标题】:Web API, APIController, Empty UserWeb API、APIController、空用户
【发布时间】:2014-07-07 08:38:02
【问题描述】:

我有一个使用 IIS 的 Windows 身份验证 设置进行身份验证的标准 Web 表单应用程序。

由于我现在需要通过 Web API 公开一些数据,所以我添加了一个 APIController,我可以成功检索所需的数据,但是,我需要根据请求者的身份限制返回的内容。

问题是this.User.Identity 空着回来了..

[System.Security.Principal.WindowsIdentity]: {System.Security.Principal.WindowsIdentity}
AuthenticationType: ""
IsAuthenticated: false
Name: ""

我是 Web API 的新手,所以不确定我做错了什么/忘记做什么...

仅供参考 - 网络表单应用上的身份验证运行良好...

【问题讨论】:

  • @granadaCoder 抱歉...我不记得发生了什么事,现在已经一年多了...我想我对 WebAPI 采取了不同的方法
  • 好的..感谢您的入住。

标签: authentication asp.net-web-api


【解决方案1】:

WebSecurity 是在 ASP.NET MVC 4 中引入的。它依赖于 SimpleMembershipProvider。它使用 FormsAuthentication 来管理 cookie

WebMatrix.WebData.WebSecurity 为 ASP.NET 网页应用程序提供安全和身份验证功能,包括创建用户帐户、登录和注销用户、重置或更改密码以及执行相关任务的能力。

WebSecurity 类用于执行安全操作

您必须先创建或初始化 WebSecurity 数据库,然后才能在代码中使用 WebSecurity 对象。

在您网站的根目录中,创建一个名为 _AppStart.cshtml 的页面(或编辑该页面)。

_AppStart.cshtml

@{
WebSecurity.InitializeDatabaseConnection("Users", "UserProfile", "UserId", "Email", true);
}

您可以通过以下代码验证您的请求。

WebSecurity.Login(LoginName, Password, true)

一旦认证成功,您将获得 WebSecurity 的值。IsAuthenticated 为真,您将获得用户的身份

【讨论】:

  • Errm.. 好吧,我对这一切都很陌生......我没有(故意)做过任何与 MVC 4 相关的事情......我所做的只是添加了一个“Web API 控制器”。 .. 到一个基本的网络表单应用程序。
  • 阅读这篇文章,这将帮助您更多地了解如何在您的 mvc 应用程序中使用会员资格和 WebSecurity:asp.net/web-pages/tutorials/security/…
【解决方案2】:

阅读这篇文章。它将提供有关 WebSecurity 以及如何使用它的更多信息

http://www.codeguru.com/csharp/.net/net_asp/mvc/using-simplemembership-in-asp.net-mvc-4.htm

http://www.mono-software.com/blog/post/Mono/226/Adding-ASP-NET-SimpleMembership-to-an-existing-MVC-4-application/

【讨论】:

  • 谢谢,但这不是 MVC……它是一个标准的 ASP.Net Web 表单应用程序,带有一个 Web API,用于共享一些数据结构。网络表单正在接收身份(来自 IIS/Windows 身份验证)没问题,但 APIController 不是,User 属性为空。
【解决方案3】:

启用“匿名身份验证”..在“windows 身份验证”旁边会产生这个“空 windowsIdentity”问题。

在这里进行更长的讨论(以及我的问题和答案):

HttpClient calling a Windows-Authenication ApiController Method...but no WindowsIdentity coming along for the ride

另见:

How to get Windows user name when identity impersonate="true" in asp.net?

【讨论】:

    猜你喜欢
    • 2012-07-17
    • 1970-01-01
    • 1970-01-01
    • 2012-07-12
    • 1970-01-01
    • 2013-08-04
    • 1970-01-01
    • 2023-03-20
    • 2012-03-14
    相关资源
    最近更新 更多