После того, как пользователь войдет в систему, мне нужно поместить переменную в сеанс.Я делаю это с помощью метода расширения:
Метод входа:
[HttpPost]
public ActionResult LogOn(LogOnModel model, string returnUrl)
{
if (ModelState.IsValid)
{
if (Membership.ValidateUser(model.UserName, model.Password))
{
FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
int id = this.HttpContext.GetFirmaId();
String username = this.HttpContext.User.Identity.Name;
//SessionExtensions.SetFirmaId(Session, model.UserName);
if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/")
&& !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\"))
{
return Redirect(returnUrl);
}
else
{
if (User.IsInRole("Administrator"))
{
RedirectToAction("Index", "Admin");
}
else
{
return RedirectToAction("Index", "Home");
}
}
}
else
{
ModelState.AddModelError("", "Brugernavn eller password er forkert.");
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
Метод расширения:
public static int GetFirmaId(this HttpContextBase context)
{
var firmaid = context.Session["firmaid"] as int?;
if (firmaid == null)
{
// Hvis firmaid er røget ud af Session, skal den firmaid som tilhører brugeren hentes
firmaid = SetFirmaId(context.Session, context.User.Identity.Name);
}
return (int)firmaid;
}
Проблема в том, что context.User.Identity.Name
возвращает пустую строку.
Как я могу решить эту проблему?