我正在开发单页应用程序样式的 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,WebForm等服务器端视图引擎asp.net 或 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 调用设置。
我想知道的是,从安全的角度来看,这种根据用户角色控制内容的方式是否合适?
如果这些视图因用户角色而异,您如何处理视图内容?想问问大家遇到这种情况是怎么处理的。