ユーザーがそのページへのアクセスを許可されているかどうかを確認するために、アプリケーションのすべてのページ (すべてのページ) に対して呼び出される次のように、JSF のこの基本セキュリティの質問を使用して承認フィルターを実装しました。フィルターの Grunt コードは次のとおりです。
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException
{
HttpServletRequest httpRequest = (HttpServletRequest)request;
HttpServletResponse httpResponse = (HttpServletResponse)response;
HttpSession session = httpRequest.getSession();
String requestPath = httpRequest.getPathInfo();
String sevPath = httpRequest.getServletPath();
if (sevPath.equals("/pages/login.jsf"))
chain.doFilter(request, response);
if (!sevPath.equals("/pages/login.jsf"))
{
if (((HttpServletRequest) request).getSession().getAttribute(
AuthenticationBean.AUTH_USER) == null)
{
((HttpServletResponse) response).sendRedirect("/pages/login.jsf");
}
else
{
//..........................get user
AuthenticationBean user = null;
try
{
error: user = (AuthenticationBean) FacesContext.getCurrentInstance().
getExternalContext().getSessionMap().get("authenticationBean");
}
catch (Exception ex)
{
ex.printStackTrace();
}
finally
{
}
//...................................
if (!user.getCurrentUser().getUserRole().equals("ADMIN"))
{
httpResponse.sendError(HttpServletResponse.SC_NOT_FOUND,"Restricted Access");
}
else
{
chain.doFilter(request, response);
}
}
}
}
上記のコードの error: という接頭辞が付いた行で NullPointerException が発生します。フィルターで直接参照できませんか? または、他に何がこのエラーの原因である可能性があります。前もって感謝します。