当新用户刚刚注册到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);
}
是否有可能在此功能中获得此指南? (我知道我可以获得userName等等,但我无法理解为什么我不能得到这个guid)
答案 0 :(得分:1)
你可以从MembershipUser
获得Guid:
var user = Membership.GetUser(model.Username);
var guid = (Guid) user.ProviderUserKey;
MSDN:
ProviderUserKey属性公开 来自会员的标识符 数据源键入为对象。类型 标识符取决于 会员提供者或 的MembershipUser。在的情况下 SqlMembershipProvider ,. ProviderUserKey可以作为Guid进行投射, 因为SqlMembershipProvider存储 用户标识符为 唯一标识符
答案 1 :(得分:1)
您无法在正在尝试的方法中获得该值。除非您使用Membership.GetUser()
应该做的是:
创建一个通用控制器,例如:
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
,而是让它们继承自新的自定义控制器
public class SalesController : MainController
并且在您需要的任何方法中,您只需致电this.User
按住MembershipUser
或this.UserGuid
即可获取用户ID。