我已经构建了一个基于HotTowel模板的应用程序,到目前为止看起来很棒。有一个小问题......它没有帐户管理。 SimpleMembership和SimpleRole已经实现,到目前为止一切都按预期工作。帐户基于ASP.NET MVC SPA模板。我能做的是 - 只在Seed方法中添加新用户(应该没有注册,只有管理员可以添加人员),一旦设置,就无法更改。从SPA模板中包含视图并将其用于管理是不成问题的,但这不适合HotTowel。只有登录适合这一点,并且以一种奇怪的方式处理注销 - 隐藏在index.cshtml中编写,然后被调用:
$.("#hiddenLogoutForm").submit()
问题是 - 如何使用当前构建的应用程序处理帐户管理?这是引入第二个微风经理处理UserContext的时候还是有更好的方法吗?考虑到我已经使用AccountController进行登录和注销,是否可以将BreezeAccountController(或类似名称)仅用于轻松读/写?如果我刚刚将[BreezeController]
装饰器添加到AccountController,登录/注销是否仍然按预期工作?如何最好地连接角色和用户信息?密码更改?默认情况下,只有UserProfile在上下文中可见,因此必须通过其他一些Action方法保存任何其他更改。是否值得尝试使用微风或只是简单地编写ajax调用?
欢迎任何建议。
提前致谢!
答案 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而不能使用微风可能看起来有点笨拙,但对于帐户管理,我认为这是值得的。