asp.net – User.Identity.GetUserId()方法无法在Web Api 2 Controller
|
在常规控制器中,以下代码有效: [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 c#获取页面的url来自
- asp.net-mvc – ASP.NET MVC如何知道方法是一种动作方法?
- asp.net-mvc-4 – 如何将自定义css / js添加到MVC4项目进行
- asp.net-mvc – asp.net MVC应该是View-Model封装域模型吗?
- asp.net-mvc – 如何通过URL获取RouteData?
- asp.net – Visual Studio和C#的竞争对手
- asp.net-mvc – asp.net mvc错误处理的最佳做法
- ASP.net vnext依赖注入
- asp.net-mvc – MVC Preview 5 – 将视图呈现为字符串以进行
- asp.net – HTTPModule BeginRequest应该是Response.Redire
- asp.net-mvc – MVC ViewBag最佳实践
- asp.net – 会话超时在IIS 7中如何工作?
- asp.net-mvc-3 – ASP.NET MVC3从https重定向到h
- asp.net – visual studio 2017调试无法启动程序
- asp.net – 更新ValidationSummary列表控件模糊?
- asp.net-mvc – MVC3:一个控制器是否需要Window
- 在ASP.net中使用image404和azurereader2
- 在ASP.NET MVC中动态地从数据库生成CSS文件
- IIS7上的ASP.NET身份验证问题 – 对于Windows身份
- asp.net – 使用Razor的Html.EditFor限制文本框中
