【问题标题】:Adding an authentification system in a deployed Roo/Gwt project在已部署的 Ro/Gwt 项目中添加身份验证系统
【发布时间】:2011-03-25 11:32:41
【问题描述】:

我最近在 Google App Engine 上部署了一个 Roo/Gwt 项目。

我花了几个小时,但找不到一个教程,逐步说明我们如何添加身份验证系统(使用联合登录 Api)。

我发现 this very good article 提供了一些有用的代码:

import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.google.appengine.api.users.User;
import com.google.appengine.api.users.UserService;
import com.google.appengine.api.users.UserServiceFactory;

@SuppressWarnings("serial")
public class OpenIdDemoServlet extends HttpServlet {

    private static final Map<String, String> openIdProviders;
    static {
        openIdProviders = new HashMap<String, String>();
        openIdProviders.put("Google", "google.com/accounts/o8/id");
        openIdProviders.put("Yahoo", "yahoo.com");
        openIdProviders.put("MySpace", "myspace.com");
        openIdProviders.put("AOL", "aol.com");
        openIdProviders.put("MyOpenId.com", "myopenid.com");
    }

    @Override
    public void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws IOException {
        UserService userService = UserServiceFactory.getUserService();
        User user = userService.getCurrentUser(); // or req.getUserPrincipal()
        Set<String> attributes = new HashSet();

        resp.setContentType("text/html");
        PrintWriter out = resp.getWriter();

        if (user != null) {
            out.println("Hello <i>" + user.getNickname() + "</i>!");
            out.println("[<a href=\""
                    + userService.createLogoutURL(req.getRequestURI())
                    + "\">sign out</a>]");
        } else {
            out.println("Hello world! Sign in at: ");
            for (String providerName : openIdProviders.keySet()) {
                String providerUrl = openIdProviders.get(providerName);
                String loginUrl = userService.createLoginURL(req
                        .getRequestURI(), null, providerUrl, attributes);
                out.println("[<a href=\"" + loginUrl + "\">" + providerName + "</a>] ");
            }
        }
    }
}

如何设置此身份验证模块?因为没有“main.java”文件,我应该把这段代码放在哪里?

非常感谢,

问候

【问题讨论】:

    标签: google-app-engine gwt spring-roo federated-identity


    【解决方案1】:

    这正在为 GWT 2.1/Roo 1.1.0 实施。更多详情请参见https://jira.springsource.org/browse/ROO-1003

    如果您迫不及待,请查看 Google App Engine 中的 Spring Security 文章,地址为 http://blog.springsource.com/2010/08/02/spring-security-in-google-app-engine/ 尽管 Roo 不支持这种方法(因此,一旦您更改了生成的代码,继续使用 Roo 会更难,但仍有可能)

    【讨论】:

    • 那么,有没有办法保护已部署的 Roo/Gwt 应用程序?
    猜你喜欢
    • 1970-01-01
    • 2018-12-30
    • 2015-10-29
    • 1970-01-01
    • 1970-01-01
    • 2020-07-21
    • 2020-08-22
    • 2012-12-09
    • 1970-01-01
    相关资源
    最近更新 更多