嗨,大家好,我正在使用自定義會員提供商和自定義角色提供商。它正在使用這些正確登錄。我還實現了自己的Membership對象,這樣我就可以訪問其他用戶信息,並且每次更換頁面時都不需要加載所有數據,但是我目前無法正確使用它。下面是我的用戶對象:如何使用自定義的httpcontext用戶使用自定義會員/角色提供商
public class User : MembershipUser
{
[Required(ErrorMessage = "Username cannot be blank")]
[Display(Name = "User name")]
public string UserName { get; set; }
[Required(ErrorMessage = "Password cannot be blank")]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
[Display(Name = "User ID")]
public long UserID { get; set; }
[Display(Name = "Family Name")]
[StringLength(50, ErrorMessage = "Family name cannot be longer than 50 characters")]
public string FamilyName { get; set; }
[Display(Name = "Given Name")]
[StringLength(50, ErrorMessage = "Given name cannot be longer than 50 characters")]
public string GivenName { get; set; }
public Company Company { get; set; }
public virtual IIdentity Identity { get; set; }
}
,並在用戶登錄時我調用下面的登錄方法:
[AllowAnonymous]
[HttpPost]
public ActionResult Login(User model, string returnUrl)
{
FormsAuthentication.SignOut();
if(Membership.ValidateUser(model.UserName, model.Password))
{
FormsAuthentication.SetAuthCookie(model.UserName, true);
return RedirectToAction("Index", "");
}
ViewBag.Message = "Failed to login";
return View();
}
但是,當我在指數看漲HttpContext.User
它只是包含名稱/ ID,而不是休息我的用戶對象。我是否需要創建自定義對象?或者是標準過程將所有這些用戶信息存儲在HttpContext.Session
對象內?或讓我的用戶延長System.Security.Principle.IPrinciple
?甚至在Controller.TempData
?或者我不熟悉的其他地方。我不想每次都要打到數據庫來加載用戶數據。
對不起,如果這些都是明顯的問題,我是相當新的Web開發,不知道做這些事情的通用方式是什麼。嘗試使用in build Authorize屬性。
我敢肯定,這可以在不同的/更好的方式來完成,但是這被證明是不夠好爲了我。 – MiBu
謝謝,我會試試這個。我正在做類似的事情,但我遇到了問題,因爲我的用戶對象大約有1000個字符。所以我決定把我需要的其他用戶信息放入會話對象中。 – user1434177
爲什麼'IsAuthenticated'返回true? – Dementic