Программная аутентификация в Java EE 6 - PullRequest
4 голосов
/ 14 мая 2010

возможно ли аутентифицировать программно пользователя в Java EE 6?

Позвольте мне объяснить более подробно:

У меня есть проект Java SE с сервлетами и гибернацией; где я управляю вручную всей аутентификацией и контролем доступа:

class Authenticator {
    int Id
    string username
}

Authenticator login(string username, string password) ;

void doListData(Authenticator auth) {
    if (isLoggedIn(auth)) listData();
    else doListError
}

void doUpdateData (Authenticator auth) {
    if (isLoggedAsAdmin(auth)) updateData() ;
    else doListError();
}

void doListError () {
    listError() ;
}

И я интегрирую J2ee / jpa / servlet 3 / ... (Glassfish 3) в этот проект.

Я видел такие аннотации, как:

@RolesAllowed ("viewer")
void doListdata (...) {
    istData() ;
}

@RolesAllowed("admin")
void doUpdateData (...) {
    updateData() ;
}

@PermotAll
void dolisterror () {
    listerror() ;
}

но как можно вручную указать в login (), что мой пользователь в роли администратора и / или вьюера просмотра?

Ответы [ 3 ]

1 голос
/ 30 июня 2013

Сначала убедитесь, что вы используете Servlet 3.0 / 3.1. Сервлет 2.4 не имеет метода входа

    @WebServlet(name="LoginServlet", urlPatterns={"/LoginServlet"})
    public class TutorialServlet extends HttpServlet {
      protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        String user = request.getParameter("user");
        String password = request.getParameter("password");
        //TODO check is user and password not null

        try (PrintWriter out = response.getWriter();){
           request.login(user, password);
           //perhaps redirect to another page on success
        } catch (ServletException e) {
            //perhaps redirect to another page to login failure
            throw new ServletException(e);
        } 
      }
    }
0 голосов
/ 14 мая 2010

Спасибо за ваши ответы, мне понадобилось время, чтобы понять это, но вы оба правы,

login(java.lang.String user, java.lang.String password) 

это то, что я хочу сделать. Вместо входа в систему моих пользователей мне необходимо войти в систему с определенной ролью:

login("admin", "admin") ;
...

:)

0 голосов
/ 14 мая 2010

Привет, это хорошо освещено в учебнике Sun Java EE 6 .

...