asp.net – User.Identity.GetUserId()方法无法在Web Api 2 Cont
在常规控制器中,以下代码有效:
[HttpPost] public ActionResult Custom() { string name = User.Identity.GetUserName(); string id = User.Identity.GetUserId(); return Content(string.Format("Name:{0} </br> ID: {1}",name,id)); } 在Web Api 2 Controller中,name和id字符串为空: [HttpPost] public IHttpActionResult Test() { string name = User.Identity.GetUserName(); string id = User.Identity.GetUserId(); return Ok(); } 任何人都可以告诉我为什么GetUserId()在普通控制器中工作但不在 我有另一个问题.如果我用[Authorize]属性装饰我的api控制器,我甚至无法访问我的api.当我已登录时,邮递员会将我引导至登录页面. [[Authorize]] public class TestController : ApiController { .... 解决方法
NKosi是对的.这个问题让我感到难过,直到我读到他的评论.
如果您的情况与我的情况类似,那么您需要为WebAPI控制器的所有经过身份验证的请求设置承载令牌. MVC控制器使用cookie身份验证,它已经单独设置并且可以工作.但是对于WebAPI控制器,显然我们需要做更多的工作. 在我的默认“个人用户帐户”WebAPI项目中,我看到默认情况下已设置会话存储变量“accessToken”.我所要做的就是从该会话存储变量中读取它,并确保从我的客户端到WebAPI控制器的每个请求都将“授权”标头设置为“承载[您的身份验证令牌]”. 从http://www.asp.net/web-api/overview/security/individual-accounts-in-web-api开始,这就是对WebAPI控制器的’Get’请求应该是什么样子.请注意“授权:”属性. GET https://localhost:44305/api/values/1 HTTP/1.1 Host: localhost:44305 User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:32.0) Gecko/20100101 Firefox/32.0 Accept: */* Authorization: Bearer imSXTs2OqSrGWzsFQhIXziFCO3rF... X-Requested-With: XMLHttpRequest (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 清理MVC 3.0应用程序中抛出的所有错误的方法
- asp.net – 无法启用/正在运行Web API属性路由
- asp.net – 什么是aspnet_Users和aspnet_Membership?我应该
- asp.net-mvc – ASP.NET MVC:路由中的命名空间
- ASP.NET Active Directory成员资格提供程序和SQL配置文件提
- 通过Asp.net中Button的CommandArgument传递多个参数
- asp.net – web.config继承:导致XML解析错误
- asp.net-mvc – 是否有可能在ASP.NET MVC中对一些AddModelE
- asp.net – 什么时候读取web.config?
- entity-framework-4 – 在我的自定义MembershipProvider中使