Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.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
Login 保护SPA多租户SaaS应用程序_Login_Angularjs_Spring Security_Saas_Single Page Application - Fatal编程技术网

Login 保护SPA多租户SaaS应用程序

Login 保护SPA多租户SaaS应用程序,login,angularjs,spring-security,saas,single-page-application,Login,Angularjs,Spring Security,Saas,Single Page Application,我需要一些关于保护单页多租户saas应用程序的帮助 问题: 1) 实施它的最佳方式是什么?我正在尝试使用angularjs、SpringMVC和REST构建应用程序。 2) 使用Spring安全性可以做到这一点吗?任何创建登录页面和保护REST的例子,调用都会有帮助吗 我发现了一个使用springjpa()实现spring安全性的示例,但它不适用于SPA和SaaS 我理解这是一个非常广泛的问题,但我对SPA、REST和SaaS还不熟悉,所以任何建议都会有所帮助 谢谢……我已经参与了两个SPA和安

我需要一些关于保护单页多租户saas应用程序的帮助

问题: 1) 实施它的最佳方式是什么?我正在尝试使用angularjs、SpringMVC和REST构建应用程序。 2) 使用Spring安全性可以做到这一点吗?任何创建登录页面和保护REST的例子,调用都会有帮助吗

我发现了一个使用springjpa()实现spring安全性的示例,但它不适用于SPA和SaaS

我理解这是一个非常广泛的问题,但我对SPA、REST和SaaS还不熟悉,所以任何建议都会有所帮助


谢谢……

我已经参与了两个SPA和安全方面的项目。最后一个是GWT+Spring Security。我相信您可以成功地将Angular和Spring Security结合使用

不幸的是,在SpringSecurityAFAIK中没有内置的配置参数“我们处于SPA模式”。因此,需要从Spring安全性方面对/conf进行一些调整。例子: 想象一下,在登录过程中,您调用内置的Spring安全登录控制器。默认情况下,如果认证成功,用户将被重定向到索引页,如果认证失败,用户将被重定向到相应的错误页。这是标准web应用程序的正常行为,但对于SPA web应用程序来说却没有那么大的用处。在SPA的情况下,您需要检测AJAX调用并打印带有用户名/角色的JSON(成功的情况下)或发送401代码(失败的情况下)(然后在JS中检测401并显示相应的错误)。您可以使用Spring Security中相应的扩展点来执行此操作:
AuthenticationSuccessHandler
AuthenticationFailureHandler

还有一点需要调整:默认情况下,会话到期后,用户将被重定向到登录页面(SPA应用程序接收登录页面作为对下一个AJAX调用的响应)

查看我的个人体验一般指南如下:登录后将角色列表加载到JS中。使用它在UI端显示/隐藏相应的组件在服务器端也应用相同的限制列表。确保用户不会在浏览器中编辑JS(尽管在一些中型应用程序的缩小JS的情况下,这将是一项非常复杂的任务)。在服务器端,您必须在以下选项中进行选择:

  • AJAX调用的安全URL
  • 保护一些Java方法
  • 我更喜欢第二种方法(服务上的安全业务方法)。我认为它更方便,因为通常我们需要安全的业务操作,而不是一些端点。作为adwantage,您将能够通过其他协议公开您的业务逻辑,并且安全性已经存在。从另一方面来说,我可以想象一些业务需求对不同的端点/协议具有不同的权限。所以这更取决于你的实际情况

    大尺寸JS应用程序必须拆分为模块。为了减少直接依赖性,最好使用事件而不是直接调用来在模块之间进行通信。Addy Osmany有一些关于如何在这些代码中实现安全性的有趣想法。我没有找到它的好链接,可能会有帮助(搜索“权限”)

    请随时发布任何问题。祝你好运