是能够验证编程在Java中的用户EE 6?

让我有一些更多的细节解释:

我有使用Servlet和Hibernate现有的Java SE项目;其中I手动管理所有的认证和访问控制:

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() ;
}

并且Im积分J2EE / JPA / servlet的3 / ...(Glassfish的3)在这个项目中。

我看到anotations像:

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

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

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

如何的我可以手动状态,在登录(),我的用户是管理员和/或观察者的角色?

有帮助吗?

解决方案

您好此覆盖很好在太阳的Java EE 6教程

其他提示

首先,请确保您使用的Servlet 3.0 / 3.1。 Servlet 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);
        } 
      }
    }

感谢您的ansers,我花了一段时间去了解它,但你可能都是对的,

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

是我想做的事情。相反,在登录的我的的用户,我需要登录一个特定的角色:

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

:)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top