【发布时间】:2012-09-13 00:56:28
【问题描述】:
我想在用户登录我的系统后控制访问。
例如:
administrator : can add, delete and give rights to employee
employee : fill forms only
...
因此,在知道用户拥有哪些权限后,检查数据库,我想限制该用户可以看到和执行的操作。 有一种简单的方法吗?
编辑
@WebFilter("/integra/user/*")
public class LoginFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {
HttpServletRequest req = (HttpServletRequest) request;
Authorization authorization = (Authorization) req.getSession().getAttribute("authorization");
if (authorization != null && authorization.isLoggedIn()) {
// User is logged in, so just continue request.
chain.doFilter(request, response);
} else {
// User is not logged in, so redirect to index.
HttpServletResponse res = (HttpServletResponse) response;
res.sendRedirect(req.getContextPath() + "/integra/login.xhtml");
}
}
// You need to override init() and destroy() as well, but they can be kept empty.
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void destroy() {
}
}
【问题讨论】:
-
您如何验证用户身份?通过容器管理的身份验证(
j_security_check或request.login())还是通过会话属性上的自制 servlet 过滤器? -
@BalusC,你好,我的朋友!好久没和你说话了。我正在使用你很久以前教我的一个 servlet 过滤器,我将把它贴在这里。
-
您可以查看jguard.sourceforge.net/mvnsite/docbook/… 我们必须创建一个自定义 EL 函数来检查用户是否具有特定角色(例如用于渲染属性)
-
我自己对此很好奇。无法真正回忆接缝 3 安全性的范围或 codi 中的类似概念,但它们可能有用。 Deltaspike 将为 v 0.4(下一个)iirc 添加这个。我也看过 apache shiro 但决定反对它。我决定暂时停止我的身份验证逻辑并等待 deltaspike 的 v.04
标签: jsf jsf-2 servlet-filters login-control