我正在研究ASP.NET MVC 4 Web应用程序.在创建用户和帐户(使用WebSecurity.CreateUserAndAccount)之后,我想继续使用此用户,例如将其用作其他模型中的外键.
一种方法是为UserProfile提供自定义UserId,并使用此UserId查询用户.例如:
...
try
{
int CustomUserId = Rnd.Next(1000000, 9999999);
WebSecurity.CreateUserAndAccount(RegisterModel.UserName, RegisterModel.Passwordword,
propertyValues: new { UserId = CustomUserId });
WebSecurity.Login(UserName, Password);
var UserProfile = (from UserProf in _db.UserProfiles
where UserProf.UserId == CustomUserId
select UserProf).FirstOrDefault();
CustomModel cm = new CustomModel();
cm.User = UserProfile;
//Add cm to database an so on...
return RedirectToAction("Index", "Home");
}
catch (MembershipCreateUserException e)
{
//Bla...
}
...
Run Code Online (Sandbox Code Playgroud)
这在我看来非常不优雅.特别是因为我自己维护UserId.有没有更优雅的方法来解决这个问题?
Noo*_*gen 12
如果您将UserId作为标识列,SimpleMembership将自动处理它.然后你可以得到生成的userId:var userId = WebSecurity.GetUserId(RegisterModel.UserName)
imho:SimpleMembership实现是一个POS.看看代码,这是一个很大的混乱.它试图变得灵活,但最终不是很灵活.它还要求UserId是一个int.再说一次,如果你能忍受它,那么好处是与第三方认证(facebook,twitter等)的自动集成.
| 归档时间: |
|
| 查看次数: |
2257 次 |
| 最近记录: |