[英]ASP.NET MVC2 Custom Membership Provider w/ Data Provider Interface Issue
[英]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
來保存MembershipUser
或this.UserGuid
來獲取用戶 ID。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.