ASP.NET Identity2 - 如何使用AllowAnonymous控制器获取用户ID?

时间:2015-09-05 09:57:45

标签: asp.net asp.net-identity-2

我想保存在查看可由授权和匿名用户访问的网页的数据库(日期和用户)中。是否有办法使操作与两种类型一起使用,因为如果操作是[AllowAnonymous],则用户未经过身份验证,我无法检索用户ID,如果操作是[Authorize]匿名用户无法访问该页面。

[HttpGet]
[Route("{id}/Detail")]
[AllowAnonymous]
[ResponseType(typeof(JsonArticleDetail))]
public IHttpActionResult GetArticle(int id)
{
    ...
    var entity = this.DbContext.Articles.Find(id);
    var applicationUserId = User.Identity.IsAuthenticated ? User.Identity.GetUserId() : null;

    entity.ArticleViews.Add(new ArticleView
    {
        ViewedOn = DateTime.UtcNow,
        ApplicationUserId = applicationUserId
    });

    this.DbContext.SaveChanges();
    return Ok(article);
}

1 个答案:

答案 0 :(得分:1)

解决方案是在行动上同时拥有[AllowAnonymous][Authorize]

[AllowAnonymous]
[Authorize]
public IHttpActionResult GetArticle(int id)