この投稿を見つけましたセッションCookieに基づいてユーザーセッションフィルターを作成する方法。
いくつかのチュートリアルに基づいて、この簡単な例を作成しました。
<filter>
<filter-name>SessionFilter</filter-name>
<filter-class>com.DX_57.AC_57.SessionFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>SessionFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<error-page>
<error-code>401</error-code>
<location>DX-57/SR-57</location>
</error-page>
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
// ! Don't forget configuration in web.xml
public class SessionFilter implements Filter
{
private FilterConfig filterConfig = null;
public SessionFilter()
{
}
@Override
public void init(FilterConfig filterConfig) throws ServletException
{
this.filterConfig = filterConfig;
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException
{
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
if (req.getUserPrincipal() == null)
{
req.getSession().setAttribute("from", req.getRequestURI());
res.sendRedirect("DX-57/SR-57/Home.jsf");
}
else
{
chain.doFilter(request, response);
}
}
@Override
public void destroy()
{
}
}
私が見つけたチュートリアルでは、セッション Cookie を使用してユーザーを識別しています。しかし、たとえばブラウザ ID や、ユーザー セッションの作成と認証に一意のものを使用できますか? JSF アプリケーションを保護するためのベスト プラクティスは何ですか?