Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.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
Java angularjs和服务器端授权_Java_Angularjs_Security_Authorization - Fatal编程技术网

Java angularjs和服务器端授权

Java angularjs和服务器端授权,java,angularjs,security,authorization,Java,Angularjs,Security,Authorization,我是Angular js和SPA的新手,我面临着编辑\查看数据和页面的授权问题 我的具体案例是关于一个相当复杂的页面,它可能有: 仅当托管对象处于特定状态且由具有特定角色的用户编辑时,页面中的某些数据才可编辑,但可由其他角色(包括某些操作按钮)查看 在托管对象的特定状态下,只能由特定角色查看的页面或部分页面 我习惯于使用java编写服务器端web应用程序,通常我在服务器级别进行数据授权处理(可编辑\不可编辑),这非常简单 对于Angular js,从我所看到的到现在,所有这些都应该在客户端处

我是Angular js和SPA的新手,我面临着编辑\查看数据和页面的授权问题

我的具体案例是关于一个相当复杂的页面,它可能有:

  • 仅当托管对象处于特定状态且由具有特定角色的用户编辑时,页面中的某些数据才可编辑,但可由其他角色(包括某些操作按钮)查看

  • 在托管对象的特定状态下,只能由特定角色查看的页面或部分页面

我习惯于使用java编写服务器端web应用程序,通常我在服务器级别进行数据授权处理(可编辑\不可编辑),这非常简单

对于Angular js,从我所看到的到现在,所有这些都应该在客户端处理,因此在js中加入决定是否可以看到输入和\或页面的逻辑,等等。 “智能”用户可以使用浏览器的开发工具(修改页面、DOM、CSS JS等)对其进行修改。 我知道在任何情况下,在调用远程rest服务(保存数据、读取数据)时,服务器都会执行最终授权,但我希望用户甚至不可能查看敏感数据\页面的存在。 也就是说,我想是这样的:

  • 可编辑\不可编辑\可查看\不可查看数据-->服务器为AngularJS模板提供正确的标记,AngularJS提供页面逻辑、调用REST WS、数据绑定、事件处理等

  • 可查看\不可查看页面->服务器提供模板或“未授权”页面,Angularjs完成其余工作

我看到的一些技巧部分可以避免某些情况,但它们对我来说并不完全是最好的

  • 在服务器端隐藏“禁止”数据-->可以避免发送授权的JSON数据。好的,但是用户总是可以通过开发工具看到这些数据的“存在”。无论如何,这不是什么大问题

  • 授权数据编辑-->未找到其他解决方案,只能由Angular js处理

  • 使用角色授权页面-简单:禁用页面由Angular处理,如果用户角色在页面授权角色列表中,则这些页面可见。 在登录时发送用户角色,并在请求页面\视图时检查引导是否正常。智能用户可轻松更改

  • 授权具有角色的页面-高级 服务器在引导时发送页面授权角色列表或数据操作(创建、更新、删除等),并在请求页面时检查用户角色是否在授权角色列表中。比前一个更好,但是智能用户无论如何都可以知道角色授权,并且使用开发工具可以解锁被禁止的页面(如果他足够聪明的话)

  • 使用功能授权授权页面:与以前的解决方案类似,但更好。服务器发送页面所需的授权,并在登录时发送用户的授权列表。这使得智能用户更难处理授权逻辑,并完全剥夺了智能用户对应用程序角色及其授权的了解(好)。但最后他还是可以打开这些页面

所有这些都可以很容易地解决(例如在java中),使用一些用于页面验证的过滤器或拦截器(最终使用诸如Spring Security之类的LIB),并使用一些模板级别的简单EL,删除用户看不到的数据,删除禁止的输入,并将页面提供给用户,但正如我所读到的,甚至这种基本的服务器处理似乎也不被鼓励

有解决办法吗? 为什么我不能那样做

致以最良好的祝愿,
Massimo

如果特定用户没有正确的角色/权限,您完全可以使用服务器端安全性来停止加载模板。在99/100的情况下,保护模板实际上并没有什么区别,您关心的是保护的数据。如果您关心的是保护模板,那么请务必使用服务器端安全性,在客户端执行的任何操作都不会受到窥探。除此之外,任何人都可以编写或使用任意数量的现有程序在服务器上发送修改过的垃圾,因此客户端安全性基本上没有意义。