2013-08-22 67 views
1

使用VS'12 asp.net MVC4 C#InternetApplication首先使用KendoUI和Simplemembership EF Code。使用用戶ID註冊後重定向

這是什麼VS給你開始。

[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"); 
. 
. 
. 

這裏是我想它想RedirectToAction我控制器ChangeUsersInfo控制器,併發送新創建的用戶的ID。

爲了得到我試圖

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. 變量返回= NULL
  2. 變量返回= NULL
  3. 行不通的,因爲1個2 didnt
  4. 似乎不重定向到新的EDITLOG IN Screen

我的空值和重定向失敗的原因是什麼?

是數據庫中有用戶

回答

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

使用WebSecurity因爲你還沒有發送AUTH的cookie返回給客戶端尚未System.Web.Security項目將只對後續請求的工作(這是它從哪裏提取數據)。鑑於此,您甚至不必在重定向URL中發送用戶的用戶ID ...他們已登錄,您可以在將要訪問的控制器/操作中獲取它。通過從AUTH票抓住了用戶id,你現在不必檢查在URL中傳遞的用戶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( 「指數」,「CH angeUsersInfo「);'仍然不會將我重定向到我的動作/控制器,它甚至不會打我的斷點,任何其他想法? - 此外,非常感謝迄今爲止,有關Cookie和Websecurity的信息非常有用。 –

+0

此外,它登錄新的註冊用戶,但留在登錄屏幕上(這真的很奇怪,有0重定向 - 其他然後我的) –

+0

你的方法工作,我h廣告一個臭只捕獲只允許管理員編輯控制器的部分。現在它的工作非常感謝! –