0

我有一个 GWT 应用程序,它采用单例类的模式设计,加载不同的“屏幕”,这些“屏幕”基本上是各种复合小部件,代表我的应用程序的不同页面。

public enum ContentContainer {

    INSTANCE;

    public void setContent(Composite content) {
        RootPanel.get("content").clear();
        RootPanel.get("content").add(content);
    }
}

我正在使用 Apache Shiro 执行身份验证。

我应该使用什么设计模式来要求我的几个“屏幕”要求用户进行身份验证?我目前正在考虑在单例中使用第二种方法setAuthenticatedContent(),它将执行检查以查看用户是否已登录。但是,这对我来说似乎很不雅,因为我必须确保启用的每个链接/按钮我进入需要身份验证的屏幕setAuthenticatedContent()而不是setContent().

有没有更好的方法可供我使用,但我还没有想到?

4

2 回答 2

0

使用Dependency Injection(Gin) 将单例对象 (ie CurrentUser.class) 注入到所有需要访问信息的组件中。
CurrentUser.cass包含用户是否已登录以及用户角色(管理员、用户等)的信息。

为了填充您的CurrentUser.class内容,您可以向后端发出请求(使用或) RPC,或者我建议使用动态主机页面方法,让后端将用户信息呈现到您的 HTML 主机页面中。 在该方法中,您可以使用或从 HTML 主机页面检索信息。RequestFactoryRequestBuilder
onModuleLoadDictonaryJSNI

重要提示:此方法仅用于显示和隐藏 UI 控件。当用户实际执行 UI 操作时,您总是必须在后端检查用户是否有权执行该操作。恶意用户可以CurrentUser.class在客户端修改您的实例。

于 2013-07-29T08:18:16.050 回答
0

拥有第二个存储用户是否登录的单例怎么样?然后您的setContent方法可以仅引用它并根据内容呈现内容。

或者可能只是static在现有的单例中声明一个变量来存储这些信息。

于 2013-07-28T16:53:09.893 回答