2010-05-14 17 views
4

是否有可能以編程方式驗證 Java EE 6中的用戶?Java EE 6中的程序化身份驗證

讓我有一些更多的細節解釋:

我有使用Servlet和休眠現有的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() ; 
} 

和IM在這個項目中整合J2EE/JPA/servlet的3/...(Glassfish的3)。

我見過anotations像:

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

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

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

如何我可以手動狀態下,在登錄(),我的用戶是管理員和/或觀衆的角色?

+0

謝謝您的ansers, 登錄(java.lang.String中的用戶,java.lang.String中的密碼) 是我想做的事:而不是登錄在我的用戶中,我需要登錄特定角色: login(「admin」,「admin」); – Kevin 2010-05-14 10:32:56

+1

根據我的經驗,編程式登錄可能需要基於您正在使用的應用程序服務器的不同代碼。要記住的事情。 – 2011-05-09 17:21:34

回答

0

謝謝您的ansers,我花了一段時間去了解它,但你可能都是對的,

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

是我想做的事情。相反,在用戶登錄的,我需要登錄一個特定的角色:

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

:)

+0

如果您想提供反饋或更詳細的問題,請編輯您的原始問題。或者給特定答案添加評論。 – ewernli 2010-05-14 10:11:00

+0

謝謝,我對兩個賬戶有點困惑(我以爲第一篇文章是匿名的,因此不可編輯) – Kevin 2010-05-14 10:31:15

1

首先確保您使用的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); 
     } 
     } 
    }