【发布时间】:2012-12-04 14:23:40
【问题描述】:
我正在开发单页应用程序风格的 Web 应用程序。 我想根据用户的角色创建菜单,例如,对于管理员用户我想显示管理员菜单和 html 内容,对于一般用户我想显示不同的 html 内容。 我正在使用带有 Razor 视图引擎的 asp.net mvc,所以这可以通过 Razor 代码实现,如下所示:
@if (@User.IsInRole("Admin"){
-- html content for admin --
}else if (@User.IsInRole("General"){
-- html content for general user --
}else{
-- html content for the other users --
}
这是我过去以传统方式开发Web应用程序时的典型方式,但是自从我开始开发单页应用程序样式的Web应用程序后,我尝试编写纯html代码并避免使用Razor等服务器端视图引擎, asp.net 中的 WebForm 或 Velocity, Java EE 中的 Jsp 标签库。我想写更独立的前端代码,不依赖服务器代码。
无论如何,当我使用javascript和knockoutjs而不是Razor时,上面的代码可以更改如下,
<!-- ko if: isAdmin -->
-- html content for admin --
<!-- /ko -->
<!-- ko if: isGeneralUser -->
-- html content for general user --
<!-- /ko -->
<!-- ko if: isOtherUser -->
-- html content for the other users --
<!-- /ko -->
isAdmin、isGeneralUser 和 isOtherUser 是 viewmodel 的属性,这些值将通过检查用户角色的 ajax 调用设置。
我想知道的是,从安全的角度来看,这种根据用户角色控制内容的方式是否合适?
如果视图内容因用户角色而异,您将如何处理这些视图内容? 想问问大家遇到这种情况是怎么处理的。
【问题讨论】:
标签: backbone.js knockout.js javascript-framework singlepage