Как реализовать логин в Java EE? - PullRequest
3 голосов
/ 04 февраля 2012

Я создаю приложение веб-службы Java EE.Я не уверен, как реализовать вход в систему:

. Лучше, чтобы вход в систему был реализован в приложении веб-службы JAVA EE, сохраняя UserPrincipal в SessionContext и извлекая его каждый раз, когда метод вызывается программно для использования

например, скажем, покупатель А покупает продукт, является ли хорошей практикой программирования хранить UserPrincipal в SessionContext и извлекать из него идентификатор пользователя для использования в транзакции,

или,

Лучше ли каждый раз передавать токен для каждой транзакции и сохранять всех пользователей, вошедших в систему, и токены, выпущенные в таблице, чтобы по окончании покупки токен можно было использовать для получения идентификатора пользователя?

Ответы [ 2 ]

4 голосов
/ 04 февраля 2012

Самый распространенный способ - это один раз войти в систему, аутентифицировать информацию о пользователе (uname, пароль) с помощью db, а затем сохранить в сеансе данные пользователя или роль пользователя (например, с помощью bean-объекта сессионной области).

Таким образом, пользовательские данные \ роль пользователя сохраняются и становятся доступными, когда вам это необходимо (на стороне сервера или на стороне клиента)

public class UserSession implements Serializable {

    // login-related fields
    protected String  userName;
    protected String  userPassword;
    protected Object  requestInfo;


    //session related info
    private Object sessionInfo ;
    private boolean loggedIn;
    /** This method tries to login the user 
    */
    private login (userName,password){
    loggedIn = callDbAndAuthenticateUser(userName,password)
    } 

Определите область действия этого компонента для сеанса и обновите егов сеансе

В другом компоненте или непосредственно со страницы jsf проверьте получатель isLoggedIn, чтобы узнать, зарегистрирован ли пользователь.


Редактировать

Вы используете ejb \ rmi при доступе к базе данных. Эти проблемы не обязательно совпадают,

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

2 голосов
/ 04 февраля 2012

AFAIK, рекомендуется хранить USER_ID в БД.

...