ASP.NET Пользовательский MembershipProvider, измените семантику CreateUser или добавьте новый метод

#.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");
    }
}
  

Этот пример упрощен и в нем отсутствует какая-либо форма проверки, но я думаю, вы можете извлечь из него идею. Это показывает, что вы должны иметь возможность расширять свой пользовательский поставщик членства любым удобным для вас способом.