我想知道你是否可以建议我在GWT应用程序中实现“用户角色”。我想实现一个GWT应用程序,用户登录并分配“角色”。根据他们的角色,他们将能够查看和使用不同的应用领域。
我认为这是两种可能的解决方案:
1)可能的解决方案是在onModuleLoad期间对服务器进行RPC调用。此RPC调用将生成必要的窗口小部件和/或将它们放在面板上,然后将此面板返回到客户端。
2)另一种可能的解决方案是在从服务器用户角色检索登录时进行RPC调用,并检查它们以查看用户可以做什么。
你怎么看?
非常感谢您的帮助!
答案 0 :(得分:4)
另一种方法是在JSP页面中托管您的GWT应用程序。您的JSP可能包含一段代码,如此
<script type="text/javascript">
var role = unescape("${role}");
</script>
其中$ {role}是表达式语言,它是从您从关联的servlet / controller计算并暴露给JSP的值扩展而来的。
当您的GWT应用在浏览器中运行时,该值将被填写。您的GWT应用程序可以轻松调用JS以从本机方法调用中获取此值,例如
public native String getRole() { /*-{ return $wnd.role; }-*/;
因此,您的模块可以调用getRole(),测试值并执行隐藏/显示元素的操作。
显然你的后端也应该强制执行该角色(例如,通过将其存储在会话中并在适当的时候进行测试),因为有人可以通过JS调试器运行页面,设置断点或类似值,在评估之前修改值,允许它们访问他们不应该访问的东西。
答案 1 :(得分:2)
以下情景对我有用:
如果不仅隐藏事物而且强制执行它们至关重要,您可以在调用业务方法时使用容器安全性并检查角色和权限。
使用GIN时,您还可以创建单例类来存储在登录期间检索到的角色,并将其注入到您需要的任何位置。