有没有办法添加额外的方法,比如语义:
CreateUser(User user, UserInfo userInfo, IsInRole isInRole, <any another things here>)
我可以创建自定义方法并单独调用该方法,但为了保持唱歌的一致性,我只是想知道是否有任何方法可以自定义MembershipProvider
或做类似的事情?
答案 0 :(得分:3)
我想您已经创建了自定义成员资格提供程序。您可以在那里添加该方法,然后在您的应用程序中使用它。假设您有自定义成员资格提供程序,例如此伪(简化)代码:
public class CustomMP : MembershipProvider
{
var db = // your data (member) storage
public void CreateUser(string username, UserInfo userInfo, /* etc... */)
{
// process data
// create new user instance.. like:
MyUser newUser = new MyUser(/* params */);
db.AppUsers.Add(newUser);
db.SaveChanges();
}
}
然后您可以在帐户控制器中使用它(或任何您想要的地方..)
public ActionResult CreateMyUser(SomeModel model)
{
if (ModelState.IsValid)
{
// create instance of your custom mebership provider
// (unless you already have one somewhere else ... as you should)
CustomMP cmp = new CustomMP();
// call your new method
cmp.CreateUser(model.username, model.userInfo, /* etc.. */);
// login newly created user (optional)
FormsAuthentication.SetAuthCookie(model.username, false /* = don't create persistent cookie);
return RedirectToAction("Index","Home");
}
}
这个例子很简单,缺少任何形式的验证,但我认为你可以从中得到这个想法。它表明您应该能够以任何方式扩展自定义成员资格提供程序。