從論壇的一篇文章(http://www.javaeye.com/topic/335078)得知,在BIRT VIEWER SERVLET內部也有認證接口代碼,只是簡單的返回了true,沒有做處理。BIRT VIEWER SERVLET是報表處理的入口,該接口如果返回flase,那麼報表將不會顯示,目標就是在該接口加入我們自己的邏輯實現,本階段先實現簡單的安全認證,即在沒有登錄的情況下無法訪問報表。
處理步驟:
1.把birt viewer項目和現有項目整合在一起(為了讓birt viewer項目能獲取到現有項目的session)
2.修改BIRT VIEWER SERVLET類,該類源碼在org.eclipse.birt.report.servlet.BirtEngineServlet下面,找到函數經行修改,紅色為新增部分
/**
* Local authentication.
*
* @param request
* incoming http request
* @param response
* http response
* @return
*/
protected boolean __authenticate( HttpServletRequest request,
HttpServletResponse response )
{
//報表權限,沒有登錄訪問不了
if(request.getSession().getAttribute("user")==null)
{
return false;
}
return true;
}
3.將該類編譯後放進BIRT包裡面。