2015-02-01 2 views
0

Я хочу установить файлы cookie в зависимости от пользователя, который вошел в систему. Поэтому, когда пользователь x входит в систему, он может видеть свое имя, которое он ввел, и если пользователь входит в систему, он видит его имя, которое он также ввел ранее. Как мне это сделать? Потому что сейчас, последний пользователь, который вошел в систему, является значением файлов cookie.Установить файлы cookie в зависимости от пользователя в Struts 2

Я проверить мои пользователи, как это:

public class LoginService { 
    public boolean verifyLogin(User user){ 
     if(user.getUserId().equals("userId") && user.getPassword().equals("password")){ 
      return true; 
     } 

     if(user.getUserId().equals("random") && user.getPassword().equals("a")){ 
      return true; 
     } 
     return false; 
    } 
} 

Это, как я установил мое печенье в моем LoginAction:

public Set<Cookie> getCookies(){ 
     Set<Cookie> cookies = new HashSet<>(); 

     Cookie userId = new Cookie("userId", user.getUserId()); 
     userId.setMaxAge(60*60*24*365); // Make the cookie last a year! 
     userId.setPath("/"); //Make it at root. 
     cookies.add(userId);} 

Это, как я установил мое печенье в моем FormAction:

public Set<Cookie> getCookies(){ 
     Set<Cookie> cookies = new HashSet<>(); 

     Cookie name = new Cookie("name", userInfo.getName()); 
     name.setMaxAge(60*60*24*365); // Make the cookie last a year! 
     name.setPath("/"); //Make it at root. 
     cookies.add(name); } 

ответ

1

Вы должны сохранить файл cookie для пользователя, который уже проверен. Если пользователь сначала проверяется, вы сохраняете его в сеансе. Затем используйте пользователя сеанса для предоставления файла cookie. Подобно этому,

if (verifyLogin(User user)) 
    session.put("user", user); 

Чтобы сохранить куки сначала получить пользователя от сеанса

public Set<Cookie> getCookies(){ 
     Set<Cookie> cookies = new HashSet<>(); 
     User user = (User) session.get("user"); 
     if (user != null){ 
      Cookie userId = new Cookie("userId", user.getUserId()); 
      userId.setMaxAge(60*60*24*365); // Make the cookie last a year! 
      userId.setPath("/"); //Make it at root. 
      cookies.add(userId); 
     } 
     return cookies; 
} 

Чтобы получить доступ к карте сессии вы можете использовать SessionAware интерфейс. Другой подход - получить сеанс из контекста действия.

Отметьте, что cookie совместно используется браузером. Если вы используете один и тот же браузер одновременно с входом с другим пользователем, он будет использовать тот же файл cookie, если вы не предоставите реализацию cookie сеанса.

Смежные вопросы