这些天来,我面临一个基本问题——让我们称之为架构设计决策。
因此,我和我的团队为我的公司构建了典型的业务线 (lob)-web-applications。就我而言, lob 尤其意味着:
- 大量的用户交互(输入数据、CRUD 实体、显示数据、聚合数据、统计和报告、验证等)
- 非常严格(用户必须登录,用户有不同的权限级别,他们可以对不同的实体进行不同类型的更改,显示各种报告等)
举个例子,让我们来看一个普通的审批工作流程:我需要一台新的笔记本电脑,所以我去“ressources-webApp”并创建一个新的采购申请。我的老板收到通知,必须批准我的请求。下一步,相关部门必须购买笔记本电脑并完成我的申请。
我知道这是一个简单的“hello world”示例,在现实生活中,您会为此目的使用现有软件(SAP 或类似软件),但它很好地描述了我的用例:数据驱动且非常严格(我可以看到我部门的所有申请但只能更改或删除我的申请,我不应该看到审批页面或调用审批api,我的老板应该只看到他的员工的申请,而不是其他部门的员工的申请,我的老板和我都不应该看到该页面或无法完成申请等)。
目前我们正在使用 ASP.NET MVC 和 WebAPI 与 angularjs 1 的结合。对于每个“动作”(页面或视图)都存在一个 mvc 控制器,它监听特定的路由并返回适当的视图。每个视图都引用一个特定的角度控制器。此外,每个视图可能包含不同的“部分视图”(组件或控件)。为了处理数据,角度控制器调用 webAPI 控制器,它们也监听特定的路由并处理请求(GET/POST/PUT/DELETE)。如果允许用户打开页面或调用操作,每个控制器(mvc 和 webAPI)都会检查 cookie 中每个 http-request 的授权令牌。
现在我想知道如何在 Angular 2 的 SPA 应用程序中执行此操作。Angular 2 对我来说听起来很有趣,并且比 Angular 1 有一些不错的好处,所以我想尝试 Angular 2。似乎只有 Angular 2 你可以构建一个 SPA 应用程序(与我上面提到的“经典”MPA 应用程序相比,其中每个页面都来自服务器并包含一个角度控制器)。
一般来说,我不喜欢 SPA,但我不确定如何处理上面提到的安全问题。
此外,SPA 还存在其他常见问题:无法从浏览器中使用后退按钮、无法直接在浏览器中输入特定 url、没有书签等。
那么,您对我有什么建议、提示或最佳实践吗?你认为 SPA 是 lob-web-applications 的一个很好的“模式”吗?如果是,您将如何处理安全问题以及其他常见的 SPA 问题?
最好的问候,亚历克斯