Dom*_*ell 5 c# asp.net-web-api angularjs
我成功以用户身份登录,然后用户可以访问该站点的[授权]部分.用户名甚至会显示在网站的右上角,因为它们已成功通过身份验证.但是,当我尝试在我的帖子中获取用户身份以创建新事件时,该用户为空.
这是我的登录服务:
login.service('loginService', function ($http, $q) {
var deferred = $q.defer();
this.signin = function (user) {
var config = {
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
}
$http.post('Token', 'grant_type=password&username='+user.UserName+'&password='+user.Password, config)
.success(function (data) {
window.location = "/dashboard";
}).error(function (error) {
deferred.reject(error);
});
return deferred.promise;
}
});
Run Code Online (Sandbox Code Playgroud)
这是我发布新活动的帖子
[Route("post")]
public HttpResponseMessage PostEvent(EventEditModel ev)
{
if (!ModelState.IsValid)
{
return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "{ }");
}
try
{
Event DBEvent;
if (ev.EventId > 0)
{
DBEvent = db.Events.Find(ev.EventId);
DBEvent.ModifiedBy = Guid.Parse(User.Identity.GetUserId());
DBEvent.ModifiedOn = DateTime.Now;
}
else
{
DBEvent = new Event();
string id = User.Identity.GetUserId();
DBEvent.CreatedBy = Guid.Parse(User.Identity.GetUserId());
DBEvent.CreatedOn = DateTime.Now;
}
...
}
Run Code Online (Sandbox Code Playgroud)
我应该在每个帖子中传递用户信息吗?我不确定我会怎么做.或者我只是没有正确登录用户?
User.Identity.GetUserId()
似乎在 Web Api 中返回 null。据我所知,你应该使用User.Identity.GetUserName()
。
例如
ApplicationUser user = UserManager.FindByName(User.Identity.GetUserName());
var userId = user.Id;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2727 次 |
最近记录: |