0

我目前正在开发 GWT 应用程序,我想根据用户权限动态呈现 UI。比如说,在我的应用程序中,我有一个产品列表,并且可以编辑该列表(添加新产品、删除等)。

我也有具有只读权限的用户和具有写权限的用户。现在是否有可能(或者是否可行)在我的 UI 类中做这样的事情:

if (user.hasWritePermissions) {
  Button addButton = new Button()
}

这样没有写入权限的用户看不到添加和删除按钮吗?当然,我的后端也有权限检查,但如果用户只看到他可以使用的内容,这很方便。

或者 GWT 还有其他更好的可能性吗?

4

2 回答 2

2
  • 你的方法很好。
  • 与任何 Java 代码一样,您可以使用多态性(例如 EditableProductListView 和 ReadOnlyProductListView)
  • 从理论上讲,您也可以使用延迟绑定来实现,但这是一个糟糕的用例:好的,如果您只有两种或三种类型的用户,它是可行的。然后您可以使用<define-property name="role" values="readonly,readwrite" />. 但是这里的优势可能很小(用户会少下载几个代码块),而排列的数量呈指数增长。

当然,这都是风格问题。这些方法在安全方面都没有更好或更差,因为实际的权限检查(正如您已经提到的,但我会再说一遍)必须在服务器端执行。

于 2012-08-24T21:43:23.930 回答
1

你也可以给所有的“admin”-Button 和 UI-elements 一个 CSS 类。如果您将另一个 CSS 类设置为根面板(或另一个祖先),您的所有管理元素都将消失。

在运行时更改 GWT 中 CSS 类的属性

body.admin .onlyForAdmin{
    display:block;
}

.onlyForAdmin{
    display:none;
}

但不能经常说:权限检查需要在服务器端!(正如你提到的)

于 2012-08-24T21:55:17.597 回答