Вход в систему openID (на локальном хосте) в Google App Engine

Я написал openID логин для Google App Engine.

static {
        openIdProviders = new HashMap<String, String>();
        openIdProviders.put("Google", "https://www.google.com/accounts/o8/id");
        openIdProviders.put("Yahoo", "yahoo.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("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>] ");
            }
        }
    }

все работает очень хорошо, когда я разверну свое приложение. Нет проблем. после выбора поставщика openID я перенаправлен на эту страницу:

sample.appspot.com/_ah/login_redir?claimid=[OPen ID provider]=[my sample page]/_ah/login_required

это мой сервлет

 <servlet>
        <servlet-name>Authorization</servlet-name>
        <servlet-class>ge.eid.test.Authorization</servlet-class>
    </servlet>
    <servlet-mapping>
    <servlet-name>Authorization</servlet-name>
        <url-pattern>/_ah/login_required</url-pattern>
    </servlet-mapping>

Хорошо. Все отлично! но когда я запускаю приложение sampe на локальном хосте, у меня есть другой URL перенаправления:

http://localhost:8888/_ah/login?continue=/F_ah/Flogin_required

поэтому у меня нет логина OpenID. У меня есть что-то подобное:

вопрос 1) Как создать openID логин на localhost тоже.

1 ответ

Это нормальное поведение, потому что на локальном хосте вы можете попробовать много разных учетных записей, и было бы беспорядочно, если бы вам приходилось каждый раз входить в систему с реальной. Поэтому на локальном хосте вы можете просто смоделировать пользователя OpenID, просто предоставив любое электронное письмо, которое вы хотите, и проверив, хотите ли вы быть администратором или нет.

Другие вопросы по тегам