Logout utilizando o Spring Security

Sr’s estou com muita dificuldade para conseguir fazer um simples logout utilizando o Spring Security!
Gostaria,se possível que alguém me passa-se o conceito dele pois estou meio perdido não estou entendendo ele com clareza já procurei em vários lugares e não achei algo que me esclareça.
Acho sempre este trecho"<a href="<c:url value="/j_spring_security_logout"/>">Logout" mais ai fico perdido pois já testei ele de varias formas.
Pergunta: eu só preciso adicionar este trecho de código ou tenho que fazer outras configurações, ou substituir este trecho por uma pagina de logout???

Config. Do Spring Security

<http auto-config='true' access-denied-page="/login.jsp">
    <intercept-url pattern="/api/**" access="ROLE_USER" />
    <intercept-url pattern="/**" access="IS_AUTHENTICATED_ANONYMOUSLY" />

    <form-login authentication-failure-url="/login.jsp" default-target-url="/index.jsp" login-page="/login.jsp" login-processing-url="/login.jsp"/>
    <logout logout-success-url="/login.jsp" logout-url="/j_spring_security_logout"/>
  </http>

Amigão é só criar uma Classe Controller com este método:

// finaliza sessão
@RequestMapping("logout")
public String logout(HttpSession session) {
	session.invalidate();
	return "redirect:login";
}

E na sua tag referencie o href=“logout”


<a href="logout">Log out?<a>

Não há necessidade nenhuma de configurar o spring-context!

Para fazer o logout de forma correta você deve ter um usuário logado ao sistema!

Bom Dia!
ppro11, Mano desta forma eu sei como fazer, mais eu gostaria de saber como funciona essa parte de logout do Spring Security.
Por Ex: Se eu colocar somente essa tag no arquivo de conf. e dizer qual pagina eu desejo que ele vá apos eu cliclar no link bastaria ou eu devo fazer alguma conf. a mais.

Eu não vejo a necessidade de você colocar nada no arquivo de configuração se você chamar método que faz o logout, já é o bastante para encerrar a sessão e não deixar o usuário ficar logado! - se você estiver usando o Interceptor se um usuário não estiver logado ele não pode acessar as páginas da sua aplicação.

Blz ppro11,eu tambem acho isso. Mas no arquivo de conf. do Spring Sec. se eu consigir automatizar todo o processo pq não usar?
Mas acontece que eu não sei utiliza-ló, e estou querendo apreeender.

Ta certo é sempre bom aprender! - É que recentemente eu fiz uma aplicação em SpringMVC e não utilizei o spring-context, isolei o método logout na Classe LoginController e onde eu precisei eu usei a url para fazer o logout!

Entendi mano.
É que estou procurando entender mais sobre o conceito do Spring Security suas conf. entre outras, mas agradeço de qualquer forma.

Nesse trecho

Você esta mapeando um endereço para a ação de logout, é a mesma coisa que

Mas automaticamente o Spring security vai invalidar sua sessão e te redirecionar para sua pagina de Login novamente, é como se o processo que o ppro11 mostrou já tivesse sido implementado pelo Spring security

AmauriSpPoa mano valeu,pela explicação!
Cara mais uma duvida, ao inves de eu colocar

como é o tradicional se não usar a conf do Spring Sec. eu devo colocar

<a href="/j_spring_security_logout"> Sair do Sistema <a> ???

Que no caso seria o idendificador do mapeamento do logout ou eu estou errado???

Caso você queira pode alterar o url do link parahref="\logout" basta alterar na configuração do Spring também&lt;logout logout-success-url="/login.jsp" logout-url="/logout"/&gt;

AmauriSpPoa cara desculpa pela demora pra responder.
Cara eu testei minha aplicação com a conf. q vc passou e não esta funcionando.
Mano eu precisso criar um controller para redirecionar a app???

Bom não vai funcionar mesmo a barra que eu coloquei ta errada :oops: href="/logout"
agora se mesmo assim não funcionar segue como eu fiz(no seu caso não tem o prefixo “security:”)

<security:http auto-config="true" access-denied-page="/403.do"> <security:form-login login-page="/login.do" login-processing-url="/loginProcess" default-target-url="/home.do" authentication-failure-url="/login.do?login_error=1" /> <!-- Aqui é definodo o url para fazer o logout --> <security:logout logout-url="/logout" logout-success-url="/login.do" /> <security:intercept-url pattern="/home/login/setLocale.do" access="IS_AUTHENTICATED_ANONYMOUSLY" /> <security:intercept-url pattern="/home.do" access="IS_AUTHENTICATED_FULLY" /> <security:intercept-url pattern="/home/**" access="IS_AUTHENTICATED_FULLY" /> </security:http>
Sair(coloquei fora da tag “code” pois o href não fica visivel)

Mano minha conf. do applicationContext:

   <http auto-config='true' access-denied-page="/login.jsp">
    <intercept-url pattern="/api/**" access="ROLE_USER" />
     <intercept-url pattern="/oauth/**" access="ROLE_USER" />
    <intercept-url pattern="/**" access="IS_AUTHENTICATED_ANONYMOUSLY" />

    <form-login authentication-failure-url="/login.jsp" default-target-url="index.jsp" login-page="/login.jsp" login-processing-url="/login.do"/>
    <logout logout-success-url="/" logout-url="/logout" invalidate-session="true"/>
  </http>

Mano o logout esta funcionado em parte,pq se eu tentar acessar qualquer pagina ele permite.
Está é a config.

que faz esta função certo??

Nessa linha você está especificando que para determinadas pastas ele pode estar como anonimo access="IS_AUTHENTICATED_ANONYMOUSLY"Só não entendi essa linha

&lt;form-login authentication-failure-url="/login.jsp" default-target-url="index.jsp" login-page="/login.jsp" login-processing-url="/login.do"/&gt; porque tem login.do e login.jsp?

      Quando o login não for compativel com o do banco apresenta está pagina:
               <form-login authentication-failure-url="/login.jsp" 
    
      Quando  a pessoa  logar no sistema a pagina padrão sera essa:
              default-target-url="index.jsp"
      O nome da pagina de login 
              login-page="/login.jsp"
      Cara eu não sei realmente o que ela faz ma se tirar ela e tentar logar com um usuario que não existe ele me retorna um erro: 404 :?:  :?:  :?:  :?: 
           login-processing-url="/login.do"/>  
      Essa de logout que vc me passou
  <logout logout-success-url="/" logout-url="/logout" 
      Força o fechamento da sessão
     invalidate-session="true"/>  
</http> 


Cara o q estiver errado pode corrigir mano pq eu quero apreender.