Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js 动态html内容取决于用户';角色_Backbone.js_Knockout.js_Javascript Framework_Singlepage - Fatal编程技术网

Backbone.js 动态html内容取决于用户';角色

Backbone.js 动态html内容取决于用户';角色,backbone.js,knockout.js,javascript-framework,singlepage,Backbone.js,Knockout.js,Javascript Framework,Singlepage,我正在开发单页应用程序风格的web应用程序。 我想根据用户的角色创建菜单,例如,对于管理员用户,我想显示管理员菜单和html内容,对于普通用户,我想显示不同的html内容。 我正在使用asp.net mvc和Razor视图引擎,因此这可以通过Razor代码实现,如下所示: @if (@User.IsInRole("Admin"){ -- html content for admin -- }else if (@User.IsInRole("General"){ -- html conte

我正在开发单页应用程序风格的web应用程序。 我想根据用户的角色创建菜单,例如,对于管理员用户,我想显示管理员菜单和html内容,对于普通用户,我想显示不同的html内容。 我正在使用asp.net mvc和Razor视图引擎,因此这可以通过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或Java EE中的Velocity、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 -->

--管理员的html内容--
--面向普通用户的html内容--
--其他用户的html内容--
isAdmin、isGeneralUser和isOtherUser是viewmodel的属性,这些值将通过检查用户角色的ajax调用进行设置

我想知道的是,从安全的角度来看,这种根据用户角色控制内容的方式是否合适

如果视图因用户角色而异,您如何处理这些视图内容?
我想知道你们是如何处理这种情况的。

我会使用模板绑定

<div data-bind="template: { name: template, data: model }"></div>

在viewmodel上,根据用户角色设置正确的模板和模型,此外,还需要保护服务器端特定于角色的方法

顺便说一句,我已经为约定绑定模板做了一个小框架,它非常适合这样的场景,它还没有完成,所以我会等待在生产站点中使用它,但它将在未来几周内准备好

上面的模板绑定与我的框架类似

<div data-bind="coc: model"></div>

如果ViewModel名为AdminViewModel,则我的库将查找名为AdminView的模板

一把小小提琴

编辑:为你想做的事提供更准确的例子

我认为您的答案的底线是,通过javascript代码检查用户角色和控制视图内容是可以的,但也要确保检查服务器端的安全性,对吗?我的问题的意图略有不同,我还打算检查服务器端的安全性,然而,我想知道的是,从安全性的角度来看,在javascript中以这种方式检查安全性是可以的?因为坏用户可以使用javascript代码来检查用户的角色,不是吗?如果是这样,我就不能使用任何与安全相关的javascript代码,比如角色、标识符等等。相反,我必须使用服务器端代码来检查用户的角色,不是吗?您永远不能依赖客户端代码。所有管理方法都必须受到保护,以便其他用户无法向其发布