扩展ASP.NET MVC寄存器

时间:2013-05-23 13:44:37

标签: asp.net-mvc passwords ravendb

我将RavenDB设置作为我在MVC项目中选择的数据库。目前注册流程如下:

    [HttpPost]
    [AllowAnonymous]
    [ValidateAntiForgeryToken]
    public ActionResult Register(RegisterModel model)
    {
        if (ModelState.IsValid)
        {
            // Attempt to register the user
            try
            {
                WebSecurity.CreateUserAndAccount(model.UserName, model.Password);
                WebSecurity.Login(model.UserName, model.Password);
                return RedirectToAction("Index", "Home");
            }
            catch (MembershipCreateUserException e)
            {
                ModelState.AddModelError("", ErrorCodeToString(e.StatusCode));
            }
        }

我的数据库逻辑类中有一个方法,用于存储用户对象,例如User

    public void SaveEntity(ModelBase entity)
    {
        using (var session = DocumentStore.OpenSession())
        {
            session.Store(entity);
            session.SaveChanges();
        }
    }

ModelBase是可以保存到数据库的所有内容的基础对象,包含用户名,密码,电子邮件等属性的User类也将是要保存的对象之一。

我的SaveEntity方法是否足够?我将如何更改Register以使用我的SaveEntity`方法来存储用户。我还想应用某种加密来存储密码。

1 个答案:

答案 0 :(得分:0)

使用RavenDB,一切都可以保存到数据库中,没有真正使用ModelBase的东西,它看起来像3层架构时代的遗留物。

您可能需要阅读此内容:http://novuscraft.com/blog/ravendb-and-the-repository-pattern

此外,关于如何在MVC网站中使用RavenDB - 有一种更简单的方法来实现您正在寻找的SaveEntity功能:http://ravendb.net/kb/3/using-ravendb-in-an-asp-net-mvc-website