#.net #asp.net #asp.net-mvc #asp.net-membership
#.net #asp.net #asp.net-mvc #asp.net-членство
Вопрос:
Есть ли какой-либо способ добавить дополнительный метод, скажем, с подобной семантикой:
CreateUser(User user, UserInfo userInfo, IsInRole isInRole, <any another things here>)
Я могу создать пользовательский метод и вызвать этот метод отдельно, но для того, чтобы поддерживать последовательность sings, мне просто интересно, есть ли какой-нибудь способ настроить MembershipProvider
подобным образом или сделать что-то подобное?
Ответ №1:
Я полагаю, у вас уже есть созданный пользовательский поставщик членства. Вы можете просто добавить этот метод туда, а затем использовать его в своем приложении. Допустим, у вас есть пользовательский поставщик членства, подобный этому псевдо (упрощенному) коду:
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");
}
}
Этот пример упрощен и в нем отсутствует какая-либо форма проверки, но я думаю, вы можете извлечь из него идею. Это показывает, что вы должны иметь возможность расширять свой пользовательский поставщик членства любым удобным для вас способом.