User.Identity.GetUserId()返回null

时间:2015-05-14 11:41:28

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

基于this article和与本教程相关的github中的源代码,我正在尝试实现一个用户拥有个人资源的mvc应用程序。

我的控制器上有authorize属性,如果我没有登录,我将被重定向到登录页面。我可以在页面顶部看到我的用户名,所以我认为一切都很好。但后来我尝试在另一个控制器上创建一个动作,并发现currentUser为空。

这似乎是随机发生的,这使得它非常令人沮丧。但最近才失败。

是否可以创建数据库?我正在使用Code First。

 [Authorize]
public class ShopsController : Controller
{
    private ApplicationDbContext db;
    private UserManager<ApplicationUser> manager;

    public ShopsController()
    {
        db = new ApplicationDbContext();
        manager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(db));

    }


    // GET: Shops
    public ActionResult Index()
    {
        var currentUser = manager.FindById(User.Identity.GetUserId());
        var shops = db.Shops.ToList().Where(shop => shop.Owner.Id == currentUser.Id);
        return View(shops);
    }

1 个答案:

答案 0 :(得分:1)

尝试此代码(注意:强制转换为字符串):

 User.Identity.GetUserId<string>()

因为我的数据库中的ID列是 Id nvarchar(128),而不是null 没有强制转换我收到了null但是在投射后它给了我预期的GUID