Cookies setMaxAge wird ignoriert

mschlegel

Erfahrenes Mitglied
Hi

Ich habe ein Template welches in OpenCMS läuft erstellt. Für meine Benutzer habe ich eine Login-jsp geschrieben in der die Cookies gesetzt und bei einem Logout auch wieder gelöscht werden.

Mein Problem ist jetzt, dass diese Cookies zwar im Browser gesetzt werden aber in dem Moment wo sie gesetzt werden ist die Lebenszeit auch schon wieder verstrichen obwohl ich setMaxAge(60 * 60 * 24 * 365) aufrufe

Ich hab schon einiges versucht, aber ich kriegs einfach nicht hin. Deswegen suche ich jetzt Hilfe bei euch.

Java:
<%@ taglib prefix="cms" uri="http://www.opencms.org/taglib/cms" %>
<%@page import="org.opencms.jsp.*"%>
<%@page import="org.opencms.file.CmsUser"%>
<%@page import="org.opencms.util.CmsRequestUtil"%>
<%@page import="org.opencms.flex.CmsFlexController" %>
<%@page import="java.lang.String" %>
<%@page import="javax.servlet.http.Cookie"%>
<%@page import="de.fun_alliance.frontend.template.TemplateStylesheet" %>


<%
TemplateStylesheet bean = new TemplateStylesheet(pageContext, request, response);
String uri = bean.link(bean.getRequestContext().getUri());

%>

<%
// Parameter lesen
String username = request.getParameter("username");
String password = request.getParameter("password");
boolean editmode = false;
boolean remember = false;
String url = request.getParameter("url");
String action = request.getParameter("action");
// try to get a boolean
try {
	remember = Boolean.parseBoolean( request.getParameter("remember") );
	editmode = Boolean.parseBoolean( request.getParameter("edit") );
}catch(Exception e) {}

// String redirect = request.getParameter("requestedResource");

// Variablen
final String userprefix = "/fun-alliance/webusers/";
String message = null;

CmsJspLoginBean cms = new CmsJspLoginBean(pageContext, request, response);

if( action != null && action.equals("logout") ){
	cms.logout();
	// Remove Cookie
	Cookie c_username = new Cookie("fa_username", null);
	c_username.setMaxAge(0);
	Cookie c_password = new Cookie("fa_password", null);
	c_password.setMaxAge(0);
	Cookie c_edit= new Cookie("fa_editmode", null);
	c_edit.setMaxAge(0);
	
	//response = org.opencms.flex.CmsFlexController.getController(request).getTopResponse();
	response.addCookie(c_username);
	response.addCookie(c_password);
	response.addCookie(c_edit);
	//CmsRequestUtil.forwardRequest(cms.link("/"), request, response );
	response.sendRedirect(cms.link("/"));
}
else if( action != null && action.equals("login") ){
	cms.login(userprefix + username, password);
	if(!cms.getUser().isWebuser() && editmode)
		cms.login(userprefix + username, password, "Offline");
	if(cms.isLoginSuccess()){
		// set cookie if wanted
		if(remember){
			Cookie c_username = new Cookie("fa_username", username);
			c_username.setMaxAge(60 * 60 * 24 * 365);
			c_username.setPath("/");
			Cookie c_password = new Cookie("fa_password", password);
			c_password.setMaxAge(60 * 60 * 24 * 365);
			c_password.setPath("/");
			Cookie c_edit = new Cookie("fa_editmode", Boolean.toString(editmode));
			c_edit.setMaxAge(60 * 60 * 24 * 365);
			c_edit.setPath("/");
			
			response = org.opencms.flex.CmsFlexController.getController(request).getTopResponse();
			response.addCookie(c_username);
			response.addCookie(c_password);
			response.addCookie(c_edit);
		}
		response.sendRedirect(url); //login successful - redirect to given URL
		//CmsRequestUtil.forwardRequest(url, request, response );
	}

}else {
	// Try to log in automatically using Cookies
	Cookie cookies [] = request.getCookies ();
	//Check cookies are available
	if (cookies != null){
		for(int i=0; i<cookies.length; i++){
			if(cookies[i].getMaxAge() > 0){
				if(cookies[i].getName().equals("fa_username") )
					username = cookies[i].getValue();
				else if(cookies[i].getName().equals("fa_password"))
					password = cookies[i].getValue();
				else if(cookies[i].getName().equals("fa_editmode")){
					try{
						editmode = Boolean.parseBoolean( cookies[i].getValue() );
					}catch(Exception e){}
				}
			}
		}
		if(username != null && !username.equals("null"))
			cms.login(userprefix + username, password);
		if(cms.getUser() != null && cms.getUser().isWebuser() == false && editmode)
			cms.login(userprefix + username, password, "Offline");
	}
}

if(!cms.isLoggedIn()){ // Benutzer ist nicht angemeldet
%>
<img src="<%= cms.link(bean.getConfigValue("Headerline.Login/Main.Login/Button", "null"))%>" alt="login" onclick="show_hide_Layer('loginbox')"/>
<div class="loginbox" id="loginbox" ; style="display:none;">
	<div class="loginbox_head"></div>
	<div class="loginbox_main">
	<form method="post" action="<%= cms.getFormLink() %>">
		<center>
		<table style="text-align:left;">
		<tr>
			<td>Login:</td>
			<td colspan="2"><input id="login" class="loginfield" type="text" name="username" onClick="SelectAll('login');"/></td>
		<tr/>
		<tr>
			<td>Passwort:</td>
			<td colspan="2"><input id="password" class="loginfield" type="password" name="password" onClick="SelectAll('password');"/></td>
		</tr>
		<tr>
			<td title="Nur für Redakteure" colspan="2">Angemeldet bleiben:</td>
			<td style="text-align:right"><input type="checkbox" name="remember" value="true"/></td>
		</tr>
		<tr>
			<td title="Nur für Redakteure" colspan="2">Editiermodus:</td>
			<td style="text-align:right"><input type="checkbox" name="edit" value="true"/></td>
		</tr>
		</table>
		</center>
		<!-- unsichtbarer Parameter, damit login und logout unterschieden werden können -->
		<input type="hidden" name="action" value="login" />
		<input type="hidden" name="url" value="<%= cms.link(cms.getRequestContext().getUri())%>" />
		
		<input type="image" src="<%= cms.link(bean.getConfigValue("Headerline.Login/Main.Login/Button", "null"))%>" alt="Login" />
	</form>
	</div>
	<div class="loginbox_foot"></div>
</div>
<%	
}
else // Benutzer ist bereits angemeldet
{
%>
	<form method="post" action="<%= cms.getFormLink() %>" >
		<b>Hallo <%= cms.getUser().getFirstname() %></b>
		&nbsp;
		<!-- unsichtbarer Parameter, damit login und logout unterschieden werden können -->
		<input type="hidden" name="action" value="logout" />
		<input type="image" src="<%= cms.link(bean.getConfigValue("Headerline.Login/Main.Logout/Button", "null")) %>" alt="Logout"  value="Abmelden" />
	</form>
<%	
}
%>

Bin mit meinem Latein echt so langsam am Ende :(

schon mal Danke im voraus.
 

Neue Beiträge

Zurück