jsf security-contraint для защиты ссылки, когда пользователь не вошел в систему? - PullRequest
2 голосов
/ 17 мая 2011

У меня есть приложение JSF2 (GlassFish 3.0), для которого определены ограничения безопасности (пример ниже).Моя проблема в том, что у меня есть ссылка «зарегистрироваться», которая не должна быть доступна, когда пользователь вошел в систему.

То есть, если он попытается нажать «/signup.jsf», он должен иметь доступесли они вошли в систему;поэтому, если у них есть какие-либо роли, они должны , а не видеть страницу.

Есть ли способ создать «обратное» ограничение безопасности, подобное этому?

Любые предложения приветствуются, спасибо!Роб

Пример ограничения из моего приложения, если это полезно:

<security-constraint>
    <display-name>profileForm</display-name>
    <web-resource-collection>
        <web-resource-name>profileForm</web-resource-name>
        <url-pattern>/profileForm.jsf</url-pattern>
        <http-method>DELETE</http-method>
        <http-method>GET</http-method>
        <http-method>POST</http-method>
        <http-method>PUT</http-method>
    </web-resource-collection>
    <auth-constraint>
        <role-name>GENERAL</role-name>
        <role-name>ADMIN</role-name>
        <role-name>STAFF</role-name>
        <role-name>INSTRUCTOR</role-name>
    </auth-constraint>
    <user-data-constraint>
        <transport-guarantee>NONE</transport-guarantee>
    </user-data-constraint>
</security-constraint>

1 Ответ

1 голос
/ 17 мая 2011

Просто создайте Filter, который делает именно это.

@WebFilter(urlPatterns={"/signup.jsf"})
public class SignupFilter implements Filter {

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        // ...

        if (userIsLoggedIn) {
            ((HttpServletResponse) response).sendRedirect("already_loggedin.jsf");
        } else {
            chain.doFilter(request, response);
        }
    }

    // ...
}

На самом деле стандарт JSF ничего не предлагает в отношении авторизации / аутентификации. JSF - это просто основанная на компонентах инфраструктура MVC.

Смотри также:

...