좋아, 오후에 배수구 아래로, 나는 SO 도움을 인정합니다. 내 로그인 방법은 꽤 표준 적입니다. 아래에 표시된 것처럼 WebSecurity.Login을 사용하고 있습니다.MVC4 WebSecurity.Login 처음 실패, 로그인 방법에서 사용자를 얻을 수 없습니다
바로 그 후 사용자 프로필이 완료되었는지 확인하고 그렇지 않은 경우 해당보기로 보내고 싶습니다.
컨트롤러 내가 무리가 .... 내가 인상했다 WebSecurity.Login 후 WebSecurity 사용자 데이터 세트 얻을 것이다 그것을 통해 강화했습니다
[AllowAnonymous]
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Login(LoginModel model, string returnUrl)
{
if (ModelState.IsValid && WebSecurity.Login(model.Email, model.Password, persistCookie: model.RememberMe))
{
if (!User.IsInRole("User"))
{
if (!IsProfileComplete(WebSecurity.GetUserId(User.Identity.Name)))
{
return RedirectToAction("ProfileCompletion");
}
if(!User.IsInRole("User")) Roles.AddUserToRole(User.Identity.Name, "Vendor");
}
else // user has role
{
return RedirectToAction("Index", "Dashboard");
}
}
ModelState.AddModelError("", "Unknown username or password.");
return View(model);
}
하지만 WebSecurity.GetUserId (User.Identity .NAME)는 사용자 ID -1
에 대한 프로필을 찾기 위해 노력하고 있기 때문에 프로파일 완료로 리디렉션됩니다 다시 -1 사용자가 프로필을 완료하더라도
, 오는 뭔가가 있나요 http 게시 및 로그인 컨텍스트에 대해 내가 누락 된 설정? 내가 찾고있는 최종 결과는 사용자가 시스템에 들어가기 전에 프로필 페이지를 완료했는지 확인하는 것입니다. 어쩌면 더 좋은 방법이 있을까요?
편집 -----
이 링크를 찾았지만 사람이 이후로 내 원하는 기능
MVC 4 SimpleMembership - Why WebSecurity.CurrentUserId -1 after login