Cadastro usuário + spring-security3

2 respostas
ATEN

Estou desenvolvendo uma aplicação com jsf2.0 + spring-security3.0 + hibernate

Estou cadastrando um usuário no sistema e apos esse cadastro o envio para a página do sistema.
A fim de testar, eu mudei a role do usuário de “ROLE_USER”, que teria permissão para a página que estou o enviando, para “ROLE_GER”
E o spring deixou ele entrar na página.
Quando faço o login normalmente, ele captura e não deixa passar.

ApplicationContext-spring.xml -

<?xml version="1.0" encoding="UTF-8"?>
<b:beans xmlns="http://www.springframework.org/schema/security"
    xmlns:b="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
                        http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.1.xsd">
	<http>
	        <intercept-url pattern="/admin/**" access="ROLE_ADMINISTRADOR" />
		<intercept-url pattern="/restrito/**" access="ROLE_RESTRICT" />
		<intercept-url pattern="/sistema/**" access="ROLE_USER" />
				

		<form-login login-page="/publico/login.jsf"
			always-use-default-target="true" default-target-url="/sistema/welcome.jsf"
			authentication-failure-url="/errorPage/error.jsf" />
		<logout/>
	</http>

</b:beans>

Método que estou usando para cadastrar usuario no sistema, ele coloca tudo no banco de dados normalmente.

public String cadastroSistema(){
	Permission p = new Permission();
	p.setAuthority("ROLE_GER");  // adiciona role_user ao ser cadastrado
	p.setAluno(this.aluno);
	AlunoDAO alunoDAO = new AlunoDAOImpl();
	if(alunoDAO.cadastroAluno(this.aluno, p))
	     return "/sistema/welcome";    //   se ele adicionar os dados no banco, manda para a página, o spring-security nao deveria deixar passar, pois ele nao tem a role_user.
		else
		     return "erro";
	}

Alguem sabe o que estou fazendo de errado ou como consertar???

[]s

2 Respostas

d34d_d3v1l

ué…

vc seta o Usuario na Permissão
e não a Permissão no Usuário,
pq?

ATEN

d34d_d3v1l:
ué…

vc seta o Usuario na Permissão
e não a Permissão no Usuário,
pq?


Como assim setar o Usuário na Permissão???

O que esta acontecendo na minha aplicação é que estou cadastrando o usuário pela primeira vez, ou seja, estou adicionando a ele o papel ROLE_USER para que ele possa entrar nas páginas do sistema que ele tem permissão.

Após perder bastante tempo percebi que apos persistir o usuário no sistema na session do spring-security ele não era setado então era necessário setá-lo na mão mesmo. Único ponto que o user é setado diretamente no spring security com suas roles é no login usando j_spring_security_check
Na minha aplicação estou usando jsf, o qual não muda a url diretamente. Ou seja, é necessário forçar a mudança para que o spring-security interceptar tal página.
Então é melhor dar um redirect=true nas páginas para forçar a mudança.

Não sei se é o melhor jeito, caso alguem tenha passado por isso e tenha resolvido de forma melhor, manda um recado ai,
Deve haver um jeito mais elegante de integrar essas tecnologias!!!

[]s

Criado 23 de julho de 2012
Ultima resposta 24 de jul. de 2012
Respostas 2
Participantes 2