Avatar billede jetrit Nybegynder
25. september 2003 - 09:08 Der er 5 kommentarer og
1 løsning

Taglib brug af "response.sendRedirect"

Hej
Jeg er lige startet med at arbejde med taglib og har brug for et godt eksempel. Jeg vil gerne lave et login, hvor taglib i toppen af beskyttede sider skal validerer en session og redirecte til loginsiden, hvis sessionen som beskytter siderne ikke er gyldig.
Avatar billede arne_v Ekspert
25. september 2003 - 09:37 #1
1) Jeg synes at du skulle overveje container managed security. Hvor JSP/servlet
  engine checker og redirecter.

2) Hvis du vil lave det så har jeg et eksempel uden taglib, hvor du må kunne
  genbruge noget kode:

<%@page import="java.sql.*"%>
<%
if((session == null) || (session.getAttribute("username") == null)) {
    String username = request.getParameter("username");
    String password = request.getParameter("password");
    if((username!=null)&&(password!=null)) {
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        Connection conn = DriverManager.getConnection("jdbc:odbc:TestMSAccess", "", "");
        Statement stmt = conn.createStatement();
        ResultSet rs = stmt.executeQuery("SELECT password FROM Tomcat_users WHERE username='" + username + "'");
        if(rs.next() && rs.getString(1).equals(password)) {
            session.setAttribute("username", username);
            response.sendRedirect("secure2.jsp");
            return;
        } else {
            %>
            Invalid username/password.
            <%
            return;
        }
    } else {
      %>
      <form action="secure2.jsp" method="GET">
      Username: <input type="text" name="username"><br>
      Password: <input type="text" name="password"><br>
      <input type="submit" value="Login">
      </form>
      <%
      return;
    }
} else {
    if(session.getAttribute("username").equals("system")) {
        %>
        <strong>It works !!!!</strong>
        <%
        return;
    } else {
        %>
        No access.
        <%
        return;
    }
}
%>
Avatar billede arne_v Ekspert
25. september 2003 - 09:37 #2
Hvis du vil gå vej #1, så har jeg også nogle XML fragmenter til det.

Som sagt er #1 nok det nemmeste.

Men du lærer selvfølgelig ikke meget tag librray ved #1 !

:-)
Avatar billede jetrit Nybegynder
25. september 2003 - 11:34 #3
hej Arne
jeg har selv tidligere lavet det med en jspfil jeg includer i toppen af beskyttede filer, men jeg ville gerne prøve at lave det med taglib. :-(
Avatar billede arne_v Ekspert
25. september 2003 - 12:38 #4
Hvis ikke du har fået et godt eksempel inden i aften, så vil jeg
muligvis prøve at bikse et eksempel sammen.
Avatar billede arne_v Ekspert
25. september 2003 - 21:28 #5
Tag klasse:

package mytags;

import java.io.*;

import javax.servlet.http.*;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;

public class CheckLoginTag extends TagSupport {
    private boolean ok;
    public int doStartTag() throws JspException {
        if(pageContext.getSession().getAttribute("username") != null) {
            ok = true;
        } else {
            ok = false;
            try {
                ((HttpServletResponse)pageContext.getResponse()).sendRedirect("login.jsp");
            } catch (IOException ex) {
                throw new JspException(ex.getMessage());
            }
        }
        return  SKIP_BODY;
    }
    public int doEndTag() {
        return (ok ? EVAL_PAGE : SKIP_PAGE);           
    }
}

Tag definition:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
    <tlib-version>1.0</tlib-version>
    <jsp-version>1.2</jsp-version>
    <short-name>taglibtest</short-name>
    <tag>
        <name>checklogin</name>
        <tag-class>mytags.CheckLoginTag</tag-class>
        <body-content>empty</body-content>
        <description>Check if user is logged in</description>
    </tag>
</taglib>

Brug:

<%@ taglib uri="mytags.tld" prefix="mytags" %>
<mytags:checklogin/>
This is a test !
Avatar billede jetrit Nybegynder
26. september 2003 - 03:31 #6
jeg har ikke set om jeg kan få det til at virke, men er sikker på jeg kan bruge det.
MANGE tak for hjælpen!!

jens
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester