Ajuda COm Spring Security

7 respostas
dugbuddy

Olá,

Eu estou criando uma aplicação web com Spring Security...
Segui alguns tutoriais, tanto aqui no GUJ quando outros..
Mas estou com duvidas... exemplo...

eu tenho aqui meu spring-security.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/security"
	xmlns:beans="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-2.0.xsd
                        http://www.springframework.org/schema/security
                         http://www.springframework.org/schema/security/spring-security-2.0.1.xsd">
						 
	<global-method-security secured-annotations="enabled">
	</global-method-security>	

	<http auto-config="true" access-denied-page="/accessDenied.jsp">
		<intercept-url pattern="../internas/**.jsp"
			access="ROLE_USER" />
		<form-login login-page="/login.jsp" />
	</http>
	
	<authentication-provider>	
		<password-encoder hash="md5" />
		<user-service>
			<user name="douglas" password="a564de63c2d0da68cf47586ee05984d7"
				authorities="ROLE_USER" />
		</user-service>
	</authentication-provider>
</beans:beans>

eu tenho uma pagina de login.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <%@ page import="org.springframework.security.ui.webapp.AuthenticationProcessingFilter" %>
<%@ page import="org.springframework.security.ui.AbstractProcessingFilter" %>
<%@ page import="org.springframework.security.AuthenticationException" %>
    
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form action="j_spring_security_check">
	<label for="j_username">Username</label>
	<input type="text" name="j_username" id="j_username" <c:if test="${not empty param.login_error}">value='<%= session.getAttribute(AuthenticationProcessingFilter.SPRING_SECURITY_LAST_USERNAME_KEY) %>'</c:if>/>
	<br/>
	<label for="j_password">Password</label>
	<input type="password" name="j_password" id="j_password"/>
	<br/>
	<input type='checkbox' name='_spring_security_remember_me'/> Remember me on this computer.
	<br/>
	<input type="submit" value="Login"/>
</form>

</body>
</html>
Gostaria de saber .. como eu faço para que este usuario abaixo, quando logar ( login.jsp) direciona ele para umas paginas que somente ele possa ver. Estas paginas estão dentro de " src/main/webapp/internas "
user name="douglas" password="a564de63c2d0da68cf47586ee05984d7"
				authorities="ROLE_USER" />
Eu tenho que 'setar' nessas funções abaixo... como eu faço isso?
<http auto-config="true" access-denied-page="/accessDenied.jsp">
		<intercept-url pattern="../internas/**.jsp"
			access="ROLE_USER" />
		<form-login login-page="/login.jsp" />
	</http>

Muito obrigado desde já pela ajuda

7 Respostas

R

Seu form-login deve ficar assim, sendo que quando o usuario logar sera direcionado para página
que foi setada em default-target-url.
Coloquei as configurações básicas para um login com Spring Security.

<form-login login-page="/login.jsp"
authentication-failure-url="/login.jsp" 
always-use-default-target="true"
default-target-url="/entrada.jsp" />

Boa Sorte.

ricardosoares

Está um tanto esquisita esta sua idéia.

" quando logar ( login.jsp) direciona ele para umas paginas que somente ele possa ver.

Não consigo compreender… não se direciona nada para “umas páginas”. E sim, para UMA página e só.
Você estaria querendo:
[list]que o browser abra todas as páginas que o usuário tem acesso;[/list]
[list]direcionar para a primeira página da relação das que ele pode;[/list]
[list]direcionar para uma página da relação das que ele pode, com sorteio;[/list]
[list]direcionar para uma página relacionando os links para as páginas acessíveis.[/list]
:?:

O quê, exatamente?

dugbuddy

Ricardo…

exemplo… o Login Douglas… tem acesso a paginas jsp… a.jsp , b.jsp e c.jsp
quando ele logar… ele vai cair na pagina a.jsp …

Mas ele so vai poder depois entrar nessas 3 paginas que estao dentro um pasta exemplo… webapp/internas/a.jsp, b.jsp, c.jsp

acho q a resposta seria: direcionar para a primeira página da relação das que ele pode;

jonathas.morais

Douglas,

Não seria o caso de liberar o usuário para acessar todas as páginas que ele tem direito?
Pode ser que facilite o trabalho.

Abs.

dugbuddy

Ricardo…

Pelo o que o Jonathas falou … seria assim…

na minha aplicacao eu tenho a pasta onde ficam as paginas de acesso publico e com uma pasta interna com 2 niveis de permissao.

publicas/*outras.jsp
internas/Adm
- cadastro.jsp
- index.jsp
- consulta.jsp

Usuario
              - index.jsp
              - consulta.jsp

o Usuario “Douglas.” quando logar… so vai poder ver essas 2 paginas jsp. A primeira pagina depois do login é a index.jsp

Eu identifico pelo nó ( internas/Usuario/*.jsp) ou por paginas jsp?

dugbuddy

Ricardo …

Eu preciso quebrar em nós, sendo que a index.jsp vai ser vista por todos?

exemplo abaixo em anexo

ricardosoares

dugbuddy:

acho q a resposta seria: direcionar para a primeira página da relação das que ele pode;

Acho que temos aqui um caso típico “para quê simplificar se podemos complicar”.

rsss… não se ofenda, por favor. não é esta a intenção.

O que vc está querendo eu não sei como fazer e acredito que não há nada pronto no Spring Security (SS).
Creio que se estudar os fontes do produto, possa ser modificado estendendo a classe responsável pelo redirecionamento e tal. Mas acho trabalhoso frente ao retorno obtido.
Vou além: nunca vi algo funcionar desta maneira e acho pouco prático.

o mais usual é:

(a) o usuário tenta acessar a página principal (home) onde é listado os acessos possíveis do usuário
(b) se o cara está logado, é mostrado a home à ele [veja item (e)]. do contrário segue a lógica
© o usuário é direcionado a pagina de autenticação (login).
(d) autenticação falhada, volta pro login [item ©]. com sucesso, ele é direcionado para página que ele tinha tentado inicialmente [item (b)]
(e) pronto para acessar as funções mostradas ao usuário

desta forma pode-se fazer o seguinte:

(a) o usuário tenta acessar a página a.jsp que ele pode acessar
(b) se o cara está logado, é mostrado a a.jsp à ele [veja item (e)]. do contrário segue a lógica
© o usuário é direcionado a pagina de autenticação (login).
(d) autenticação falhada, volta pro login [item ©]. com sucesso, ele é direcionado para página que ele tinha tentado inicialmente [item (b)]
(e) o usuário está na página a.jsp

Criado 8 de janeiro de 2010
Ultima resposta 8 de jan. de 2010
Respostas 7
Participantes 4