2013-08-22 2 views
1

VS'12 asp.net MVC4를 사용 C# InternetApplication with KendoUI and Simplemembership EF Code.사용자 ID를 사용하여 등록 후 리디렉션

이것은 VS에서 시작하는 것입니다. 난 내 컨트롤러 ChangeUsersInfo 컨트롤러에 RedirectToAction에 그것을 좋아하고 그것을 새로 만든 사용자의 ID를 전송 할 경우 다음

[HttpPost] 
    [AllowAnonymous] 
    [ValidateAntiForgeryToken] 
    public ActionResult Register(RegisterModel model) 
    { 
     if (ModelState.IsValid) 
     { 
      // Attempt to register the user 
      try 
      { 
       WebSecurity.CreateUserAndAccount(model.UserName, model.Password); 
       WebSecurity.Login(model.UserName, model.Password); 
       return RedirectToAction("Index", "Home"); 
. 
. 
. 

이다.

내가

1.

   var UserID = (from u in db.UserProfiles 
          where u.UserName == User.Identity.Name 
          select new 
          { 
           UserID = u.UserID 
          }).Single(); 

2.

var userID = System.Web.Security.Membership.GetUser().ProviderUserKey; 
  1. 리턴 RedirectToAction 시도 ID를 얻으려면 ("편집", "ChangeUsersInfo"사용자 ID);

  2. 또한 변수없이 보낼 수 있는지 알기 위해 return RedirectToAction("Edit","ChangeUsersInfo");을 사용해 보았습니다.

    1. 변수 반환 = 널
    2. 변수 = 반환 몇 가지 이유를 들어

  3. 나던 작업
  4. 보인다 1 개, 2 didnt 한 새로운 EDIT에 있지만 리디렉션되지하기 때문에 LOG IN 화면

null 값의 원인과 리디렉션이 실패한 이유는 무엇입니까?

예 데이터베이스가 WebSecurity를 ​​사용하여 사용자

답변

1
var userID = System.Web.Security.Membership.GetUser().ProviderUserKey; 

을 가지고 있으며, 아직 클라이언트에 다시 인증 쿠키를 전송하지 않았기 때문에 System.Web.Security 항목은이가 (이후의 요청에 따라 작동합니다 어디에서 데이터를 가져옵니다). 이 경우 사용자의 사용자 ID를 리디렉션 URL에 보내지 않아도됩니다 ... 로그인 한 상태이므로 이동하려는 컨트롤러/작업에서 가져올 수 있습니다. URL에 전달 된 사용자 ID가 실제로 현재 로그인 한 사용자를 경우 인증 티켓에서 사용자 ID를 잡아함으로써, 당신은 지금 확인하지 않아도

예 :.

로그인 방법

[HttpPost] 
    [AllowAnonymous] 
    [ValidateAntiForgeryToken] 
    public ActionResult Register(RegisterModel model) 
    { 
     if (!ModelState.IsValid) 
     { 
      //send em back with the errors 
      Return View(); 
     } 
     try 
     { 
      WebSecurity.CreateUserAndAccount(model.UserName, model.Password); 
      WebSecurity.Login(model.UserName, model.Password); 
      return RedirectToAction("Index", "ChangeUsersInfo"); 
     }... 
    } 

변경 사용자 정보 컨트롤러

[Authorize] 
public ActionResult Index() 
{ 
    var userId = WebSecurity.CurrentUserId; 
    var model = GetUserInfoService.GetUserInfo(userId); 
    Return View(model); 
} 
+0

'리턴 RedirectToAction ("인덱스", "채널 angeUsersInfo ");'는 여전히 내 액션/컨트롤러로 나를 리다이렉트시키지 않을 것이고, 그것은 나의 브레이크 포인트를 타격하지 않을 것이다. 또한 쿠키 및 Websecurity 정보를 제공해 주셔서 감사합니다. –

+0

또한 새로운 로그인 사용자를 로그인하지만 로그인 화면에 남겨 둡니다. (0 리다이렉트 - 다른 사람은 내 것입니다) –

+0

당신의 방법은 효과적이었습니다. 편집 섹션. 그 일은 지금 너무나 감사합니다! –