ASP.NET 自定义成员资格提供程序,更改 CreateUser 语义或添加新方法



有没有办法添加额外的方法,让我们说这样的语义:

CreateUser(User user, UserInfo userInfo, IsInRole isInRole, <any another things here>) 

我可以创建自定义方法并单独调用该方法,但为了保持一致的歌声,我只是想知道有没有办法自定义这样的MembershipProvider或做类似的事情?

我想您已经创建了自定义成员资格提供程序。您只需在此处添加该方法,然后在应用程序中使用它。假设您有类似于以下伪(简化)代码的自定义成员资格提供程序:

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

这个例子是简化的,缺少任何形式的验证,但我认为你可以从中得到这个想法。它表明您应该能够以所需的任何方式扩展自定义成员资格提供程序。

最新更新