0
我定義了一個PhaseListener來檢查JSF項目中的授權。但它不適用於HTML5。即使我添加到web.exml中的servlet映射的url = *。html,它也不適用於HTML5。因爲JSF2不支持HTML5的一些標籤。如帆布等如何在JSF項目中調用HTML5文件時檢查授權
在JSF項目中調用HTML5文件時,如何檢查授權?
我定義了一個PhaseListener來檢查JSF項目中的授權。但它不適用於HTML5。即使我添加到web.exml中的servlet映射的url = *。html,它也不適用於HTML5。因爲JSF2不支持HTML5的一些標籤。如帆布等如何在JSF項目中調用HTML5文件時檢查授權
在JSF項目中調用HTML5文件時,如何檢查授權?
你應該首先沒有使用階段監聽器來完成這項工作,但是一個servlet filter。階段偵聽器僅在JSF請求上運行,即僅運行與FacesServlet
的URL模式相匹配的請求。對於授權檢查的唯一目的,階段偵聽器是笨拙的方法。
這裏有這樣一個過濾器可以看怎麼樣一個具體的開球例如,假設你已經存儲在登錄用戶的User
對象的會話:
@WebFilter("/*")
public class LoginFilter implements Filter {
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws ServletException, IOException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
HttpSession session = request.getSession(false);
User user = (session != null) ? session.getAttribute("user") : null;
String loginURL = request.getContextPath() + "/login.xhtml";
boolean loginRequest = request.getRequestURI().startsWith(loginURL);
boolean resourceRequest = request.getRequestURI().startsWith(request.getContextPath() + ResourceHandler.RESOURCE_IDENTIFIER);
if (user != null || loginRequest || resourceRequest)) {
chain.doFilter(request, response);
} else {
response.sendRedirect(loginURL);
}
}
// ...
}
謝謝你,我現在嘗試它 – tufan
嗨, 我已經完成登錄userBean(ManagedBean)jsf。所以我不知道如何設置用戶屬性。我可以使用jquery.post() - > servlet或userBean來設置嗎? – tufan
順便說一下,過濾器正在工作,謝謝。我嘗試寫'request.getSession()。setAttribute(「user」,u);'in userBean – tufan