簡體   English   中英

ASP.NET MVC在創建用戶時獲取userId?

[英]ASP.NET MVC get userId when creating user?

我想在注冊時獲得UserId

[AllowAnonymous]
    [HttpPost]
    public ActionResult Register(RegisterModel model)
    {
        if (ModelState.IsValid)
        {
            // Attempt to register the user
            MembershipCreateStatus createStatus;
            Membership.CreateUser(model.UserName, model.Password, model.Email, passwordQuestion: null, passwordAnswer: null, isApproved: true, providerUserKey: null, status: out createStatus);

            if (createStatus == MembershipCreateStatus.Success)
            {
                FormsAuthentication.SetAuthCookie(model.UserName, createPersistentCookie: false);
                //Object reference not set to an instance of an object.
                Guid id = (Guid)System.Web.Security.Membership.GetUser().ProviderUserKey;
                System.Web.Security.Roles.AddUserToRole(model.UserName, "User");
                return RedirectToAction("Index", "Home");
            }
            else
            {
                ModelState.AddModelError("", ErrorCodeToString(createStatus));
            }
        }

        // If we got this far, something failed, redisplay form
        return View(model);
    }

但是發生錯誤(“對象引用未設置為對象的實例。”)。 如何在register方法中獲取userId?

謝謝。

FormsAuthentication.SetAuthCookie驗證下一個請求,同一請求上的System.Web.Security.Membership.GetUser()將返回null:

如果CookiesSupported為false,則SetAuthCookie方法會將表單身份驗證票證添加到Cookie集合或URL。 表單身份驗證票證將表單身份驗證信息提供給瀏覽器發出的下一個請求。 使用表單身份驗證時,如果要對用戶進行身份驗證但仍保留對重定向的導航控制,則可以使用SetAuthCookie方法。

Membership.CreateUser返回創建的用戶,因此您應該能夠這樣做:

[AllowAnonymous]
[HttpPost]
public ActionResult Register(RegisterModel model)
{
    if (ModelState.IsValid)
    {
        // Attempt to register the user
        MembershipCreateStatus createStatus;
        MembershipUser membershipUser = Membership.CreateUser(model.UserName, model.Password, model.Email, passwordQuestion: null, passwordAnswer: null, isApproved: true, providerUserKey: null, status: out createStatus);

        if (createStatus == MembershipCreateStatus.Success)
        {
            FormsAuthentication.SetAuthCookie(model.UserName, createPersistentCookie: false);
            Guid id = (Guid)membershipUser.ProviderUserKey;
            ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM