我正在云平台上运行JavaEE网站。 现在我想使用两种类型的身份验证:
一些细节
如果服务授予该用户权限,它将为用户会话设置属性:
userSession.setAttribute("auth", "granted");
要限制对该资源的访问,我使用过滤器:
@WebFilter("/supersecret/*")
public class NiceFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
HttpSession session = req.getSession();
// check
if (session.getAttribute("auth") != "granted")
// redirect to login
else
chain.doFilter(req, res);
}
//...
虽然目前有效,但我觉得我的解决方案非常草率。
我宁愿使用标准的JavaEE机制,但大多数已经用于auth-method 1),就像在web.xml中声明 login-config 一样。
有关此问题的更强大解决方案的任何想法?
提前致谢:)