簡體   English   中英

ASP.NET MVC2 + 會員

[英]ASP.NET MVC2 + Membership

當新用戶剛剛注冊到 ASP.NET MVC 應用程序時,我想在我的用戶表中創建用戶(我使用默認的 ASP.NET MVC 日志系統 - 成員資格。我想獲取新注冊用戶的 guid 並在我的數據庫中創建用戶相同的 guid 並保留不同的數據,如姓名等。我該怎么做?我怎樣才能得到注冊的人 ID?我試圖在

public ActionResult Register(RegisterModel model) function in AccountController

但我不知道如何獲取剛剛注冊的用戶的 guid 這不起作用:

[HttpPost]
public ActionResult Register(RegisterModel model)
{
    if (ModelState.IsValid)
    {
        // Attempt to register the user
        MembershipCreateStatus createStatus = MembershipService.CreateUser(model.UserName, model.Password, model.Email);

        if (createStatus == MembershipCreateStatus.Success)
        {
            FormsService.SignIn(model.UserName, false /* createPersistentCookie */);

            //string guid = Helpers.getLoggedUserGuid(); //return null

           //if (Request.IsAuthenticated) { } // return false
           //if (System.Web.HttpContext.Current.User.Identity.IsAuthenticated) {} // return false
           //Membership.getUser() // return null
           //The most funny is that after this redirection below the user is logged in - I do not understand it
            return RedirectToAction("Index", "Home");
        }
        else
        {
            ModelState.AddModelError("", AccountValidation.ErrorCodeToString(createStatus));
        }
    }

    // If we got this far, something failed, redisplay form
    ViewData["PasswordLength"] = MembershipService.MinPasswordLength;
    return View(model);
}

是否有可能在此 function 中獲得此指南? (我知道我可以得到 userName 等等,但我不明白為什么我不能得到這個 guid)

您可以從MembershipUser獲得 Guid:

var user = Membership.GetUser(model.Username);
var guid = (Guid) user.ProviderUserKey;

MSDN:

ProviderUserKey 屬性從類型為 object 的成員數據源公開標識符。 標識符的類型取決於 MembershipProvider 或 MembershipUser。 在 SqlMembershipProvider 的情況下,ProviderUserKey 可以轉換為 Guid,因為 SqlMembershipProvider 將用戶標識符存儲為 UniqueIdentifier。

您無法在您嘗試的方法中獲得該值。 除非您使用Membership.GetUser()

應該做的是:

創建一個普通的controller,例如:

public class MainController : Controller
{
    public MembershipUser _user = null;
    public MembershipUser User {
        if(_user == null) _user = Membership.GetUser(model.Username);
        return _user;
    }
    public GUID UserGuid {
        get { return (Guid)User.ProviderUserKey;; }
    }
}

然后,不要讓您的控制器從Controller派生,而是讓它們從您的新自定義 Controller 繼承

public class SalesController : MainController

並且在您需要的任何方法中,您只需調用this.User來保存MembershipUserthis.UserGuid來獲取用戶 ID。

暫無
暫無

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

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