Estou com um problema na segurança do Jboss Seam e não sei bem como resolver. Vou explicar a situação:
Problema: Criar um controle de acesso, onde somente os itens que o usuário possui permissão serão exibidos.
O usuário tem de ser validado no LDAP e as roles dele estão em uma tabela do nosso banco.
Solução:
Coloquei todos os itens do menu no banco de dados e programaticamente montei a lista do menu que será exibido ao usuário e cuspo isso na tela.
Problema na Solução: Foi tudo feito corretamente mas existe o problema de que se o usuário logar e jogar uma url que ele não possui acesso o sistema aceita e exibe a página.
Existe alguma forma de restringir a página para apenas se o usuário tiver alguma role ou mesmo bloquear esse problema de jogar a url direto?
Tente algo assim no pages,xml do seam.
<page view-id="/home.xhtml" action="#{identity.isLoggedIn}">
<navigation from-action="#{identity.isLoggedIn}">
<rule if-outcome="true">
<redirect view-id="/main.xhtml"/>
</rule>
</navigation>
</page>
[]s
jair
Isso não dá pra fazer pois o usuário está logado!!! Eu quero uma forma de delegar os papéis e ele bloquear através das roles do usuário.
Tentei utilizar a tag restrict no pages.xml mas ela só é chamada quando acesso o sistema pelo menu, mas quando jogo a url ele nem lê o pages.xml 
Alguém tem idéia?
Percebi que o sistema havia vários arquivos pages.xml distribuidos, assim coloquei a role especifica da tela em cada um deles.
Não deu pra ficar centralizado no pages.xml, pois o sistema já estava utilizando vários “sub-pages”