2012-02-03 2 views
0

Менеджеры (администратор, пользователь) могут портить веб-приложение, когда администратор отключил пользователя, который подключился к тому, как вызвать пользователя выйти из приложения прямо сейчас?Как playframework запускает логин пользователя, когда пользовательский флаг отключен

Интересно, что в playframework запускается логин для входа в систему.

+0

Я хочу, чтобы установить сессию logined пользователя к нулю, чтобы выйти из системы пользователя, но не может получить пользователь идентификатора сеанса –

ответ

1

Самый простой способ идти об этом, чтобы иметь действие контроллера с аннотацией @Before, который проверяет, что статус пользователя (т.е. был логаут на администратора) и, если пользователь был записан out перенаправляет их на соответствующую страницу.

Пример

@Before 
private static void checkUserIsStillLoggedIn() { 
    // do some logic to check the user is logged out by admin 
    // ... 
    // if has been logged out, redirect to the login page, rather than continuing 
    if (hasBeenLoggedOut) login(); 
} 
+0

этот метод должен каждый раз проверять статус пользователя, и большая часть проверки бесполезна и будет тратить много времени, есть ли что-то, что может вызвать проверку, например, работу. –

+0

не очень, потому что сервер не содержит состояния клиента, кроме БД. Job.now() не знал бы, кому сообщить, что изменился статус пользователей, если у вас нет веб-узлов и не сохранено какое-либо состояние на стороне сервера как часть долгого общения. но это, вероятно, слишком велико. – Codemwnci

+0

Я решил это, поставив кеш информации для входа в систему, когда статус пользователя изменился, измените кеш, а затем, когда пользователь проверки все еще зарегистрирован, просто выйдите из системы. LOGIN_INFO = (HashMap ) Cache.get ("LOGIN_INFO"); достаточно. благодаря! –

0

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

public class Authentication extends JapidController { 

    public static void logout() { 
      //logic of logout 
     } 
} 


public class ApplicationController extends JapidController { 
    @Before 
    static void checkAuthenticated() { 
     //if user is disabled by admin { 
      Authentication.logout(); 
     } 
    } 
} 
+1

Calling статического метода контроллера вызывает редирект на эту страницу, а затем называя это. Если вам нужен метод, который нужно вызывать напрямую, вы должны использовать @Util - Annotation, чтобы пометить его как «не действие». –

+0

Я не могу получить сеанс пользователя (Cache) и не знаю, зарегистрирован ли этот пользователь. как позволить пользователю выйти из системы? –

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