0

以下のように、ドメインが異なるさまざまなクラブがあります。

Kid club = kidclub.google.mobi
Youth Club = youthclub.yahoo.mobi
Adult Club=adult.godaddy.mobi
Elderly Club = elderly.google.mobi

リダイレクト設定は次のとおりです (リダイレクト設定の例):

1. Kid Club should redirect to Youth Club 
2. Youth Club should redirect to Adult Club
3. Adult Club should redirect to Elderly Club
4. Elderly Club should redirect to Kid club

問題のシナリオ: ユーザーが Kid Club に登録しようとすると、このクラブに登録していない場合、ドメイン「kidclub.google.mobi」に転送されます。しかし、彼がすでに登録されている場合は、設定で定義されている別のクラブ Youth Club (youthclub.yahoo.mobi) にリダイレクトする必要があります。また、すでにユース クラブに登録されている場合は、自動的にアダルト クラブ (adult.godaddy.mobi) にリダイレクトされます。これは、彼が登録されていないクラブまで続きます。

1 つのクラブにリダイレクトできる次のコードがありますが、ユーザーが 2 番目のクラブに加入しているかどうかを確認できません。

//ClubDao.isActive(user,club) returns TRUE if user is active to that club and 
FALSE if user is inactive. 

if( user != null && club != null && ClubDao.isActive(user, club))
{
redirectReturningUser( request, response,domain );
}

void redirectReturningUser( HttpServletRequest request, HttpServletResponse 
response,Domain currentDomain )
{
String redirectToUrl = currentDomain.getDefaultUrl();

if( "kidclub.google.mobi".equals( currentDomain.getDefaultUrl() ) )
   redirectToUrl = "youthclub.yahoo.mobi";
else if( "youthclub.yahoo.mobi".equals( currentDomain.getDefaultUrl() ) )
   redirectToUrl = "adult.godaddy.mobi";
else if( "adult.godaddy.mobi".equals( currentDomain.getDefaultUrl() ) )
   redirectToUrl = "elderly.google.mobi";
else if( "elderly.google.mobi".equals( currentDomain.getDefaultUrl() ) )
   redirectToUrl = "kidclub.google.mobi";

       doRedirect(response, "http://"+redirectToUrl );
}
4

2 に答える 2

0

Clubそれぞれを url 文字列にマップし、クラブに対するユーザー メンバーシップが確立されたときに文字列を取得するとどうなるでしょうか。

  static Map<Club, String> redirectMap= new LinkedHashMap<Club, String>();

  static  {
    redirectMap.put(new Club("kidclub.google.mobi"), "youthclub.yahoo.mobi");
    redirectMap.put(new Club("youthclub.yahoo.mobi"), "adult.godaddy.mobi");
    redirectMap.put(new Club("adult.godaddy.mobi"), "elderly.google.mobi");
    redirectMap.put(new Club("elderly.google.mobi"), "kidclub.google.mobi");

  }

  void redirectReturningUser (HttpServletRequest request, HttpServletResponse response) throws IOException {
    Map<Club, String> tmpRredirectMap = new LinkedHashMap<Club, String>();
    for (Map.Entry<Club, String> entry: redirectMap.entrySet()){

      Club club = entry.getKey();
      String redirectUrl = entry.getValue();
      if( user != null && club != null && ClubDao.isActive(user, club))  {
        tmpRredirectMap.put(club, redirectUrl);
      }
    }
    boolean done = false;
    String tempUrl = domain.getDefaultUrl();
    int count = redirectMap.size();
    Club tempClub = new Club(tempUrl);
    do {
      if (tmpRredirectMap.keySet().contains(tempClub)){
        tempClub = new Club(redirectMap.get(tempClub));
        count--;
      } else {
        done = true;
      }
    } while (! done && count > 0);
    redirectReturningUser(request, response, tempClub.getName());
  }
  void redirectReturningUser( HttpServletRequest request, HttpServletResponse  response, String redirectUrl ) throws IOException {

    doRedirect(response, "http://"+redirectUrl );
  }

  private void doRedirect(HttpServletResponse response, String s) throws IOException {
    response.sendRedirect(s);
  }
于 2012-11-12T15:56:57.670 に答える
0

この問題を解決するためにwhileループを使用しましたが、うまくいきました!!

while(registered==true){

   //code for redirectconditions
    .......................

    checkifRegistered==false??
     }
  redirectUser(club URLLink);

ありがとう、

于 2012-12-06T12:15:10.887 に答える