angularjs和服务器端授权

时间:2016-09-29 09:31:49

标签: java angularjs security authorization

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

我的具体案例是一个非常复杂的页面,可以有:

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

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

我习惯于用java编写的服务器端Web应用程序,通常我在服务器级别进行数据授权处理(可编辑\不可编辑),这很容易。

使用Angular js,从我看到的到现在为止,所有应该在客户端级别处理,所以在JS中放入判断是否可以看到输入和/或页面的逻辑,依此类推。 这可能会被使用浏览器开发工具的“智能”用户修改(修改页面,DOM,CSS JS等)。 我知道在任何情况下,当调用远程休息服务(保存数据,读取数据)时,服务器会执行最终授权,但我希望用户甚至没有查看敏感数据存在的可能性\页面。 我希望是这样的:

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

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

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

  • 隐藏“禁止”数据 - >在服务器端,我们可以避免发送授权的JSON数据。好的,但用户可以随时使用DEv Tools查看此类数据的“存在”。无论如何,这不是一个大问题。

  • 授权数据编辑 - >没有找到其他解决方案,而是让它由Angular js处理。

  • 使用角色-simple授权页面:Angular处理禁止页面,如果用户角色位于页面授权角色列表中,则会使它们可见。 用户角色在登录时发送,并且在请求页面\视图时,引导程序检查是否正常。智能用户可轻松更改。

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

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

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

任何解决方案? 为什么我不能这样做?

最好的问候, 马西莫

0 个答案:

没有答案