I've added some files as an example. How i manage the user sessions.

----- Original Message -----
From: "Arik Levin ( Tikal )" <[EMAIL PROTECTED]>
To: "'Struts Users Mailing List'" <[EMAIL PROTECTED]>
Sent: Tuesday, December 31, 2002 11:59 AM
Subject: RE: How to forward from a struts form to a login dialog ?


> There are two main solutions:
>
> The first one is more effective, including JAAS.
> You have to make a form that call j_security_check action with j_password
> and j_username inputs, the web server has its own security engine that
> throws you to your first login page if you are not authorized.
>
> The second solution is simpler. You make a base action which store your
user
> information at the HttpSession after it has been authorized. Every action
> you have at your application should extend this base action. In case of
> session timeout or user not authorized just forward to your login page.
>
> I hope this helps you.
>
> Arik.
>
> -----Original Message-----
> From: Zsolt Koppany [mailto:[EMAIL PROTECTED]]
> Sent: Thursday, November 07, 2002 11:18 AM
> To: [EMAIL PROTECTED]
> Subject: How to forward from a struts form to a login dialog ?
>
> Hi,
>
> in a struts form I want to check whether to user has already logged in. If
> not, instead of showing the form I want to forward the user to a login
> dialog
> and he must log in. After the user logged in, I want him to come back to
the
>
> form and I have to restore the original parameters of the form.
>
> What is the best solution?
>
>
> Zsolt
>
>
>
> --
> To unsubscribe, e-mail:
> <mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail:
> <mailto:[EMAIL PROTECTED]>
>
>
> --
> To unsubscribe, e-mail:
<mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail:
<mailto:[EMAIL PROTECTED]>
>
>
/*
 * $Archive:  $
 *
 * $Workfile:  $
 * $Revision:  $
 * $Date:  $
 * $Author:  $
 *
 * Copyright 2002 J-Instance. All Rights Reserved.
 *
 * This software is the proprietary information of J-Instance.
 * Use is subject to license terms.
 *
 */

package com.jinstance.ibep.login;

import org.apache.struts.action.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

import javax.naming.*;

import org.apache.commons.beanutils.*;

import com.jinstance.ibep.action.*;

// RMA:
import org.apache.log4j.PropertyConfigurator;
import org.apache.log4j.Logger;
import org.apache.log4j.Priority;  

public class LoginAction extends DefaultAction  {

  static Logger logger = Logger.getLogger(LoginAction.class.getName());

  private String sessionUsernamePath;

  private String loginname,
                 password;
  

  /**
   * This is the main action called from the Struts framework.
   * @param mapping The ActionMapping used to select this instance.
   * @param form The optional ActionForm bean for this request.
   * @param request The HTTP Request we are processing.
   * @param response The HTTP Response we are processing.
   */
  public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {

    PropertyConfigurator.configure("log4j.properties");

    logger.

    ActionErrors ae = new ActionErrors();

    /** Get the path to the username for this application. */
    sessionUsernamePath = getSessionUsernamePath();
    
    try {

      /** Retrieve the login data from the form. */
      loginname = (String)PropertyUtils.getSimpleProperty(form, "loginname");
      password = (String)PropertyUtils.getSimpleProperty(form, "password");

    } catch (Exception e) {
       logger.error("Missing loginname or password method within the LoginActionForm", e);
       System.out.println (e);
    }

    /** Create a user session. */
    HttpSession session = request.getSession(true);

    /** Set the username at the path specified in the web.xml file */
    session.setAttribute(sessionUsernamePath, loginname);

    logger.info("User " + loginname + " succesfully logged into the application");

    return mapping.findForward(ACTION_SUCCESS);
  }

  private String getSessionUsernamePath() throws ServletException {
    try {
      Context context = new InitialContext();
      return (String)context.lookup("java:comp/env/session/username");
    } catch(NamingException namingException) {
      logger.fatal("Missing <env-entry> in web.xml (session/username) ", namingException);
      throw new ServletException("Missing <env-entry> in web.xml (session/username)");
/*
 * $Archive:  $
 *
 * $Workfile:  $
 * $Revision:  $
 * $Date:  $
 * $Author:  $
 *
 * Copyright 2002 J-Instance. All Rights Reserved.
 *
 * This software is the proprietary information of J-Instance.
 * Use is subject to license terms.
 *
 */
 
package com.jinstance.ibep.login;

import org.apache.struts.action.*;
import javax.servlet.http.*;

public class LoginActionForm extends ActionForm  {

  protected String loginname = null;
  protected String password = null;

  /**
   * Reset all properties to their default values.
   * @param mapping The ActionMapping used to select this instance.
   * @param request The HTTP Request we are processing.
   */
  public void reset(ActionMapping mapping, HttpServletRequest request) {
    loginname = null;
    password = null;
  }

  /**
   * Validate all properties to their default values.
   * @param mapping The ActionMapping used to select this instance.
   * @param request The HTTP Request we are processing.
   * @return ActionErrors A list of all errors found.
   */
  public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
    final ActionErrors ae = new ActionErrors ();

    /** Check the loginname for length. */
    if (loginname.length() == 0) {
      ae.add("username", new ActionError("error.username.required"));
    } else if (!loginname.equals("ronald mathies")) {
      ae.add("username", new ActionError("error.username.false", loginname));
    }

    /** Check the password for length. */
    if (password.length() == 0) {
      ae.add("password", new ActionError("error.password.required"));
    } else if (!password.equals("1nf1n1ty")) {
      ae.add("password", new ActionError("error.password.false"));
    }
       
    return ae;
  }

  public String getLoginname() {
    return loginname;
  }

  public void setLoginname(String loginname) {
    this.loginname = loginname;
  }

  public String getPassword() {
    return password;
  }

  public void setPassword(String password) {
    this.password = password;
  }

  
}
/*
 * $Archive:  $
 *
 * $Workfile:  $
 * $Revision:  $
 * $Date:  $
 * $Author:  $
 *
 * Copyright 2002 J-Instance. All Rights Reserved.
 *
 * This software is the proprietary information of J-Instance.
 * Use is subject to license terms.
 *
 */

package com.jinstance.ibep.login;

import javax.servlet.*;
import java.io.*;
import javax.servlet.http.*;

import javax.naming.*;

public class LoginCheckFilter implements Filter  {
  private FilterConfig filterConfig = null;

  public void init(FilterConfig filterConfig) throws ServletException {
    this.filterConfig = filterConfig;
  }

  public void destroy() {
    this.filterConfig = null;
  }

  public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    Context context;
    String SessionUsernamePath = null;

    /** Get the HTTP version */
    HttpServletRequest httpRequest = (HttpServletRequest)request;
    HttpServletResponse httpResponse = (HttpServletResponse)response;

    try {

      /** Retrieve the session path from the web.xml file */
      context = new InitialContext();
      SessionUsernamePath = (String)context.lookup("java:comp/env/session/username");

      /** Get the session of this browser session (if excist) */
      HttpSession session = httpRequest.getSession();

      /** Check to see if the user is logged in */
      if (session.getAttribute(SessionUsernamePath) == null) {

        String uri = httpRequest.getRequestURI();
        String contextPath = httpRequest.getContextPath();

        /** Check to see if the request came from the login page
         *  if so then we shouldn't redirect becouse this ends into
         *  a loop.
         */ 
        if (!uri.startsWith(contextPath.concat("/login/")) &&
            !uri.startsWith(contextPath.concat("/LoginAction.do")) &&
            !uri.startsWith(contextPath.concat("/images/")) &&
            !uri.startsWith(contextPath.concat("/css/"))) {
          httpResponse.sendRedirect(contextPath.concat("/login/LoginForm.jsp")); 
        }
      }
      
    } catch(Exception e) {
      throw new ServletException("Missing <env-entry> in web.xml (session/username)\n\r" + e);
    }

    chain.doFilter(request, response);
  
  }
}

Attachment: LoginForm.properties
Description: Binary data

Attachment: LoginForm_de.properties
Description: Binary data

Attachment: LoginForm_nl.properties
Description: Binary data

/*
 * $Archive:  $
 *
 * $Workfile:  $
 * $Revision:  $
 * $Date:  $
 * $Author:  $
 *
 * Copyright 2002 J-Instance. All Rights Reserved.
 *
 * This software is the proprietary information of J-Instance.
 * Use is subject to license terms.
 *
 */
 
package com.jinstance.ibep.login;

import org.apache.struts.action.*;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

import com.jinstance.ibep.action.*;

public class LogoutAction extends DefaultAction  {
  /**
   * This is the main action called from the Struts framework.
   * @param mapping The ActionMapping used to select this instance.
   * @param form The optional ActionForm bean for this request.
   * @param request The HTTP Request we are processing.
   * @param response The HTTP Response we are processing.
   */
  public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {

    /** Retrieve the current user session, but dont create one. */
    HttpSession session = request.getSession(false);
    
    /** Invalidate this session. All session set information will be destroyed*/
    session.invalidate();

    return mapping.findForward(ACTION_SUCCESS);
  }
}
--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to