mvc将用户标识从FormsAuthentication传递给表

时间:2016-12-06 22:32:33

标签: asp.net-mvc security authentication

问题是当我尝试创建项目时给我这个错误

INSERT语句与FOREIGN KEY约束冲突

这是我的登录操作

<div id="time"></div>

我希望将用户ID传递给表名为

的表

和此表上的用户ID名为Uid所以我在下面使用了这个

 public ActionResult Login(UserTb U, string ReturnUrl)
    {
        var count = db.UsersTb.Where(x => x.NameUser == U.NameUser && x.PassUser == U.PassUser).Count();
        if (count == 0)
        {
            ViewBag.Msg = "invalde user";
            return View();
        }
        else
        {
            FormsAuthentication.SetAuthCookie(U.NameUser + "|" + U.IdUser, false);
            return RedirectToAction("Index", "Home");

        }

    }

这里是我的创建动作结果

[Table("Item")]
public class Item
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int id { get; set; }
    [Required]
    public string name { get; set; }
    public string info { get; set; }
    public decimal price { get; set; }

    public int? Uid { get; set; }
    public int CatId { get; set; }

    public int? CountryId { get; set; }

    public int? StateId { get; set; }

    public int? CityId { get; set; }

    [ForeignKey("Uid")]
    public virtual UserTb UserTb { get; set; }

    [ForeignKey("CatId")]
    public virtual Category Category { get; set; }

    [ForeignKey("CountryId")]
    public virtual Country Country { get; set; }

    [ForeignKey("StateId")]
    public virtual States States { get; set; }

    [ForeignKey("CityId")]
    public virtual City City { get; set; }

    public Item()
    {
        Uid = Convert.ToInt32(HttpContext.Current.User.Identity.Name.Split('|')[1]);
    }

}

如果另一种方法是在登录时保存用户ID并在我需要时在其他桌面上获取它而没有问题请告诉我如何因为我是mvc中的新手

1 个答案:

答案 0 :(得分:0)

只需将UserId.ToString()用作name

FormsAuthentication.SetAuthCookie(U.IdUser.ToString(), false);

稍后您可以使用以下方式获取ID:

HttpContext.Current.User.Identity.Name

编辑:

最初设置如下:

var userDetails = U.NameUser.ToString() + " | " + U.IdUser.ToString();
FormsAuthentication.SetAuthCookie(userDetails, false);

稍后您可以使用以下方式获取ID:

var savedUserDetails = HttpContext.Current.User.Identity.Name;