基于HotTowel的应用程序中的帐户管理

时间:2013-12-02 11:54:49

标签: breeze hottowel

我已经构建了一个基于HotTowel模板的应用程序,到目前为止看起来很棒。有一个小问题......它没有帐户管理。 SimpleMembership和SimpleRole已经实现,到目前为止一切都按预期工作。帐户基于ASP.NET MVC SPA模板。我能做的是 - 只在Seed方法中添加新用户(应该没有注册,只有管理员可以添加人员),一旦设置,就无法更改。从SPA模板中包含视图并将其用于管理是不成问题的,但这不适合HotTowel。只有登录适合这一点,并且以一种奇怪的方式处理注销 - 隐藏在index.cshtml中编写,然后被调用:

$.("#hiddenLogoutForm").submit()

问题是 - 如何使用当前构建的应用程序处理帐户管理?这是引入第二个微风经理处理UserContext的时候还是有更好的方法吗?考虑到我已经使用AccountController进行登录和注销,是否可以将BreezeAccountController(或类似名称)仅用于轻松读/写?如果我刚刚将[BreezeController]装饰器添加到AccountController,登录/注销是否仍然按预期工作?如何最好地连接角色和用户信息?密码更改?默认情况下,只有UserProfile在上下文中可见,因此必须通过其他一些Action方法保存任何其他更改。是否值得尝试使用微风或只是简单地编写ajax调用?

欢迎任何建议。

提前致谢!

1 个答案:

答案 0 :(得分:0)

所以,我的处理方式如下:

我制作了AccountController的副本,并将其命名为BreezeAccountController并赋予它[BreezeController]属性。在那之后,我做了一些清理,只剩下我想要的方法,并添加了更多。另外,将其更改为使用UsersContext。

允许[HTTPGet]的所有数据与Breeze完美配合。除了SaveChanges之外的其他一切,我必须编写自己的ajax调用。幸运的是,它就像这样简单:

        return $.ajax({
            type: "POST",
            url: "./breeze/breezeAccount/ActionMethod",
            data: JSON.stringify(data),
            success: querySucceeded,
            dataType: 'json',
            contentType: 'application/json; charset=utf-8'
        });

如何读取数据可能很难,但这也很简单。客户端上的变量data是一个具有一些属性的简单对象。在服务器上,我在客户端添加了一个与JSON-ed数据完全相同的新类,然后我的action方法如下所示:

    [HttpPost]
    [Authorize(Roles = "Admin")]
    [System.Web.Mvc.ValidateAntiForgeryToken]
    public object ActionMethod(PostedData data)
    {
        // usage: data.property1
        // and do whatever you want, register, validate, change etc..
    }

使一些方法POST而不能使用微风可能看起来有点笨拙,但对于帐户管理,我认为这是值得的。