4

我们为新的基于 Web 的应用程序选择了基于 REST 的架构。整个平台以 RESTful 服务的形式公开,因此任何 UI(WEB/Mobile)都可以在这些之上构建。因此,应用程序分为 3 层,即数据库、应用程序层——这只是公开 RESTful 服务和 UI——目前是基于 HTML5/CSS/Javascript 的使用 Web 服务的 UI。

此应用程序还具有基于角色的访问权限,因此必须根据角色设计 UI。Web 服务在服务响应中返回一组权限,然后在 Javascript 中使用它来构建 UI,这是一个好主意吗?

角色的 UI 变化如下:
主菜单可能会根据角色而变化
必须根据角色控制选项卡
应用程序中的大多数页面都是基于小部件的,小部件的显示再次标记为角色

再一次,我想知道这是否是一个正确的想法。请建议。

4

2 回答 2

2

要遵循 HATEOAS(作为应用程序状态引擎的超媒体)约束,您应该让 REST 服务本身提供对“应用程序状态”有效的状态转换(即链接),其中包括有关导航、选项卡的任何特定逻辑等根据用户的角色可用。

因此,您的资源应该以这样一种方式设计,即它们可以返回特定于您的登录用户的结果。

例如(使用HAL作为超媒体类型)

GET /users/123/navigation

{
  "_links": {
    "http://api.service.com/rels/home": { "href"="/" "title"="Home" },
    "http://api.service.com/rels/admin": { "href"="/admin" "title"="Admin" }
   }
}

这样做将“什么角色可以做什么”的业务逻辑保留在服务中,这才是真正属于该逻辑的地方。

于 2012-06-08T12:02:29.557 回答
0

为此,您需要将所有菜单选项、小部件和页面名称存储在数据库中,并在运行时加载菜单。(即您的第一个请求是从服务器发送角色和 getMnu)

您可以轻松创建基于角色的 Rest 架构,并为 Restful 服务提供安全性。

于 2012-06-08T11:44:45.290 回答