<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Latest posts for the topic "Autenticando seus usuários"]]></title>
		<link>http://recipes.mentaframework.org/posts/list/4.page</link>
		<description><![CDATA[Latest messages posted in the topic "Autenticando seus usuários"]]></description>
		<generator>JForum - http://www.jforum.net</generator>
			<item>
				<title>Autenticando seus usuários</title>
				<description><![CDATA[ LoginAction.java: (herda de [i]BaseLoginAction[/i] do Mentawai)<br /> [code]<br /> package examples.authentication;<br /> <br /> import java.util.*;<br /> <br /> import org.mentawai.core.*;<br /> import org.mentawai.action.*;<br /> <br /> public class LoginAction extends BaseLoginAction {<br /> 	<br /> 	 public String execute() throws Exception {<br /> <br /> 		String user = input.getStringValue("username");<br /> 		String pass = input.getStringValue("password");<br /> 		<br /> 		if (user == null || user.trim().equals("")) {<br /> 			return ERROR;<br /> 		}<br /> 		<br /> 		if (pass == null || pass.trim().equals("")) {<br /> 			return ERROR;<br /> 		}<br /> 		<br /> 		if (!user.equals("saoj") || !pass.equals("abc123")) {<br /> 			return ERROR;<br /> 		}<br /> <br /> 		User u = carregueUsuarioComoVoceQuiser(user, passs);<br /> 		<br /> 		setUserSession(u); // com isto, o usuário está autenticado.<br /> 		// ATENCAO: Esse método LIMPA/RESETA a session antes de adicionar o User<br /> 		// Se você precisar colocar alguma coisa na sessão, faça isto DEPOIS de setUserSession!<br /> 		<br /> 		return SUCCESS;<br /> 	}<br /> }<br /> [/code]<br /> Proteja suas actions contra acessos não autorizados:<br /> <br /> No ApplicationManager.java:<br /> [code]<br /> import org.mentawai.core.*;<br /> import org.mentawai.filter.*;<br /> <br /> public class ApplicationManager extends org.mentawai.core.ApplicationManager {<br /> 	<br />     public void loadActions() {<br />         <br />         filter(new AuthenticationFilter()); // filtro global de autenticação<br />         on(LOGIN, redir("/login.jsp")); // Conseqüência global<br />         <br />         action("/Login", LoginAction.class)<br />             .on(SUCCESS, redir("/welcome.jsp"))<br />             .on(ERROR, fwd("/login.jsp"));<br /> <br />             <br />         // ou<br />         <br />         addGlobalFilter(new AuthenticationFilter()); // filtro global de autenticação<br />         addGlobalConsequence(LOGIN, new Redirect("/login.jsp")); // Conseqüência global<br />         <br />         ActionConfig ac = new ActionConfig("/Login", LoginAction.class);<br />         ac.addConsequence(SUCCESS, new Redirect("/welcome.jsp"));<br />         ac.addConsequence(ERROR,  new Forward("/login.jsp"));<br />         addActionConfig(ac);<br />     }<br /> }<br /> [/code]<br /> Se o usuário não estiver autenticado, o [i]AuthenticationFilter [/i]vai retornar LOGIN como resultado da action, que por sua vez vai executar um redirect para /login.jsp.<br /> <br /> Protegendo o acesso a arquivos JSP por usuários não autenticados:<br /> [code]<br /> &lt;%@ taglib uri="/WEB-INF/lib/mentawai.jar" prefix="mtw" %&gt;<br /> &lt;mtw:requiresAuthentication /&gt;<br /> &lt;html&gt;<br /> &lt;body&gt;<br /> &lt;h2&gt;Você precisa estar logado para ver isto!&lt;/h2&gt;<br /> &lt;/body&gt;<br /> &lt;/html&gt;			<br /> [/code]<br /> Aqui acontece o mesmo que acontece com as actions, ou seja, se o usuário não estiver autenticado, o browser será redirecionado para a página configurada na consequencia global para LOGIN, no caso /login.jsp.<br /> <br /> Existem algumas actions que não devem ser bloqueadas, como, por exemplo, uma [i]RegistrationAction[/i], [i]PasswordRecoveryAction[/i], [i]HelpAction[/i], etc. <br /> <br /> Para que não sejam bloqueadas, elas devem implementar a interface [i]AuthenticationFree [/i]:<br /> [code]<br /> public interface AuthenticationFree {<br />    <br />    public boolean bypassAuthentication(String innerAction);<br /> 	<br /> }<br /> [/code]<br /> Para o logout, basta você usar a action [i]LogoutAction [/i]que já vem com o Mentawai. Essa action remove o objeto [i]User [/i]da sessão e depois invalida a sessão.<br /> [code]<br /> public class ApplicationManager extends org.mentawai.core.ApplicationManager {<br /> 	<br />     public void loadActions() {<br />         <br />         filter(new AuthenticationFilter()); // filtro global<br />         on(LOGIN, redir("/login.jsp")); // conseqüência global<br />         <br />         action("/Login", LoginAction.class)<br />             .on(SUCCESS, redir("/welcome.jsp"))<br />             .on(ERROR, fwd("/login.jsp"));<br />                     <br />         action("/Logout", LogoutAction.class)<br />             .on(SUCESS, redir("/index.jsp"));<br />        <br />     }<br /> }<br /> [/code]<br /> E é isso!<br /> <br /> Por último, mas não menos importante, você pode usar algumas tags do Mentawai para tornar o seu trabalho com autenticação mais fácil:<br /> [code]<br /> &lt;%@ taglib uri="/WEB-INF/lib/mentawai.jar" prefix="mtw" %&gt;<br /> &lt;html&gt;<br /> &lt;mtw:isLogged&gt;<br /> Olá, &lt;mtw:out value="user.name"/&gt;!<br /> &lt;/mtw:isLogged&gt;<br /> <br /> &lt;mtw:isLogged negate="true"&gt;<br /> Por favor, faça seu login!<br /> &lt;/mtw:isLogged&gt;<br /> &lt;/html&gt;<br /> [/code]]]></description>
				<guid isPermaLink="true">http://recipes.mentaframework.org/posts/preList/39/42.page</guid>
				<link>http://recipes.mentaframework.org/posts/preList/39/42.page</link>
				<pubDate><![CDATA[Sat, 26 Jan 2008 06:38:13]]> GMT</pubDate>
				<author><![CDATA[ rodrigo.avila]]></author>
			</item>
	</channel>
</rss>
