Utilizando Spring Secutiry

4 respostas
jonas.cant
<?xml version="1.0" encoding="UTF-8"?>
<b:beans xmlns="http://www.springframework.org/schema/security"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:b="http://www.springframework.org/schema/beans"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
 
http://www.springframework.org/schema/beans/spring-beans.xsd
 
 
http://www.springframework.org/schema/security
 
                            http://www.springframework.org/schema/security/spring-security-3.0.xsd">
 
    <http auto-config="true" use-expressions="true">
        <intercept-url pattern="/index.jsf" access="hasRole('ROLE_USER')"/>
        <form-login login-page="/login.jsf" authentication-failure-url="/login.jsf?erro=true"/>
    </http>
     
    <authentication-manager>
        <authentication-provider>
            <jdbc-user-service data-source-ref="dataSource"
               users-by-username-query="SELECT username, password, enable FROM usuario WHERE username=?"
               authorities-by-username-query="SELECT Usuario_username as username, autorizacoes_nome as authority FROM usuario_autorizacao WHERE Usuario_username=?"
            />
        </authentication-provider>
    </authentication-manager>
 
    <b:bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
        <b:property name="url" value="jdbc:mysql://localhost:3306/livraria" />
        <b:property name="driverClassName" value="com.mysql.jdbc.Driver" />
        <b:property name="username" value="root" />
        <b:property name="password" value="123" />
    </b:bean>
 
</b:beans>

Esse código acima é do applicationContext.xml. Eu gostaria de saber como fazer para aplicar/usar essas autorizações. Por exemplo: o usuário JOAO não pode ter acesso à página de cadastro de clientes. Alguém poderia me explicar? Ou se alguém tiver um material legal sobre spring security, de preferência em português, eu ficaria grato.

4 Respostas

MiguelCP

Cara tem esse link que foi o que tirou algumas dúvidas minhas a respeito do Spring Security http://jamacedo.com/2011/01/crud-jsf-2-parte-3-seguna-com-spring-security-3/
Dá uma olhada, qualquer coisa você pergunta o que ficou em dúvida.

jonas.cant

Sim, foi exatamente desse site que eu tirei aquele código. O arquivo de configuração está ok, mas gostaria de saber como aplicar essas autorizações nas minha páginas, ou como funciona isso, o que é feito automático e o que eu devo fazer. Não sei se me expressei bem, espero que sim…
Por exemplo, como fazer com que o usuário JOAO não acesse a página de cadastro de clientes utilizando spring security.

MiguelCP

Você deverá fazer algo do tipo:

<form action="j_spring_security_check" method="post">

Usuário: <input name="j_username" type="text" value="${not empty login_error ? SPRING_SECURITY_LAST_USERNAME : ''}" />

<br />

Senha: <input type="password" name="j_password"><br />

<input type="submit" value="Efetuar Login"><br />

<a href="index.jsp">Retornar para a Página Inicial</a>

</form>

//Tirado do Blog http://www.edsongoncalves.com.br/2010/04/25/seguranca-passo-a-passo-com-spring-security-3-0/

Ou você quer algo do tipo deste post http://www.guj.com.br/java/294612-springsecurity–jsf2–primefaces#1564111

jonas.cant

Amigo, também não era isso que eu queria. A página de login está funcionando corretamente e está direcionando para o index. Mas te agradeço mesmo assim por tentar me ajudar.

Acredito que agora eu compreendi como funciona… vou tentar explicar o que eu entendi, e se eu estiver errado que alguém me corrija.

Eu terei uma tabela USUARIO e outra tabela USUARIO_AUTORIZACAO no meu banco de dados. Se eu cadastrar o usuário JOAO com autorização USER, então ele só poderá acessar as páginas que tiverem o “access=“hasRole(‘USER’)”” conforme abaixo:

<intercept-url pattern="/index.jsf" access="hasRole('USER')"/>
<intercept-url pattern="/consultas.jsf" access="hasRole('USER')"/>
<intercept-url pattern="/relatorios.jsf" access="hasRole('USER')"/>

No caso se eu tiver as seguintes páginas:

<intercept-url pattern="/admin.jsf" access="hasRole('ADMIN')"/>
<intercept-url pattern="/restrito.jsf" access="hasRole('ADMIN')"/>
<intercept-url pattern="/faturamento.jsf" access="hasRole('ADMIN')"/>

O usuário JOAO não poderá acessar porque ele está autorizado como USER.

Se for isso mesmo que eu entendi, gostaria que alguém confirmasse. Eu não posso testar isso no momento.

Criado 1 de março de 2013
Ultima resposta 1 de mar. de 2013
Respostas 4
Participantes 2