Skip to content

PT BR 03. Configuração

Rafael Dipold edited this page Feb 21, 2014 · 5 revisions

A configuração básica/obrigatória exige que sejam implementados as seguintes interfaces:

  • AuthorizationRestrictionListener (Obrigatório)

    A implementação dessa interface é obrigatória deve ser feita em seu @Controller e serve para que você decida o destino do usuário caso ele se confronte com um problema de autenticação ou autorização. Exemplo:

import br.com.caelum.vraptor.security.AuthorizationRestrictionListener;

@Controller
public class AuthController implements AuthorizationRestrictionListener {
	@Inject private Result result;
	
	@Override
	public void onAuthorizationRestriction(AuthorizationException e) {
		result.include("error", e.toString());
		result.forwardTo(LoginController.class).formLogin();
		//OR
		result.use(Results.status()).forbidden(e.toString());		
	}
}
  • Permission (Obrigatório)

    A implementação dessa interface é obrigatória serve para fazer a ponte entre os dados dos usuários que estão disponíveis em seu banco de dados, arquivo.ini, etc. para o plugin. Exemplo:

import br.com.caelum.vraptor.security.Permission;
import br.com.caelum.vraptor.security.User;

public class AuthService implements Permission {

	@Inject UsuarioDAO usuarioDAO;
	
	@Override
	public User getUserByUsername(String username) {
		Usuario usuario = usuarioDAO.selecionarUsuarioByUsername(username);
		return new User(usuario.getUsername(), usuario.getPassword());
	}
 
	@Override
	public Set<String> getRolesByUser(String username) {
		return usuarioDAO.listarPerfilsByUsername(username);
	}

	@Override
	public Set<String> getPermissionsByRole(String role) {
		return usuarioDAO.listarPermissoesByPerfil(role);
	}
}
  • ShiroInitConfigStrategy (Opcional)

    A implementação dessa interface é opcional e tem como objetivo a possibilidade de customização do Apache Shiro. É possível, portanto, modificar globalmente o comportamento da sessão do usuário, da criptografia, etc. Ao longo da documentação serão apresentados alguns exemplos práticos.

  • AuthenticationListener (Opcional)

    A implementação dessa interface é opcional e serve para observar quando um usuário faz login ou logoff da aplicação.

  • SessionListener (Opcional)

    A implementação dessa interface é opcional e serve para observar quando a sessão de um usuário inicia, finaliza ou expira.

Próximo Passo: Autenticação