基于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);
}
答案 0 :(得分:1)
尝试此代码(注意:强制转换为字符串):
User.Identity.GetUserId<string>()
因为我的数据库中的ID列是 Id nvarchar(128),而不是null 没有强制转换我收到了null但是在投射后它给了我预期的GUID