[Java / Spring] UserBean in Session

Pagina: 1
Acties:

  • Bbfreak
  • Registratie: September 2002
  • Laatst online: 04-02 10:03
Vooraf:
Dit zijn mijn eeste stappen in de Spring wereld.
Ik gebruik:
  • Spring
  • Spring MVC
  • Hibernate
  • Tomcat 5.5.12
Waar praten we over?
Ik heb een webapplicatie in Spring gemaakt.
Het is nog klein en bevat alleen CRUD functionaliteit.
Nu wil ik hier beveiliging in bouwen.

Ik heb wat rondgekeken en ben uitgekomen bij een JSF + Spring + Hibernate example
op javaworld.com. hier zit mooie user functionaliteit in.
De backend is precies wat ik wil en dit zit ook in mijn applicatie.
Het probleem is de bean. Bij de JSF applicatie gebruiken ze Backing Beans.
Tenminste die term heb ik voorbij zien komen? Dit is een Bean gekoppeld aan de view.
Deze houdt de login status bij + bijbehorende gegevens.

Nu is mijn probleem dat ik niet helemaal weet hoe ik dit icm Spring MVC aan moet pakken.
Ik denk zelf dat het met een simpel HttpSession moet icm een simpele POJO. Is dit mogelijk?
Moet ik dit aan mijn ModelAndView object meegeven?

Ik hoop dat ik op de goede weg zit. Zo niet dan hoop ik dat jullie me de goede kant op kunnen sturen!

Twitter @cmeerbeek / Halo Waypoint Profile


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Voor security zou ik eens gaan kijken naar Acegi http://acegisecurity.sourceforge.net/

[ Voor 6% gewijzigd door Alarmnummer op 17-11-2005 16:00 ]


  • Bbfreak
  • Registratie: September 2002
  • Laatst online: 04-02 10:03
Heb ik gedaan maar op dit moment is dat nog iets teveel overkill.
Of iemand moet een goede duidelijk handleiding weten?
Ik heb die op javalobby.com gelezen en die kreeg ik niet aan de praat.

[edit]
Ondertussen ga ik verder en heb weer wat in elkaar gevlochten. Graag comment.

1. Een login JSP
2. In *-servlet.xml een LoginFormController gekoppeld aan de inlog.
3. In *-servlet.xml de LoginFormController gedefinieerd.
XML:
1
2
3
4
5
6
7
8
    <bean id="loginFormController" class="org.ymor.repman.web.LoginFormController">
        <property name="commandName"><value>login</value></property>
        <property name="commandClass"><value>org.ymor.repman.model.User</value></property>
        <property name="validator"><ref bean="beanValidator"/></property>
        <property name="formView"><value>loginForm</value></property>
        <property name="successView"><value>redirect:index.jsp</value></property>
        <property name="userManager"><ref bean="userManager"/></property>
    </bean>

4. Een LoginFormController.java gemaakt.
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
    public ModelAndView onSubmit(HttpServletRequest request,
                                 HttpServletResponse response, Object command,
                                 BindException errors)
            throws Exception {
        if (log.isDebugEnabled()) {
            log.debug("Script: entering 'onSubmit' method...");
        }

        User user = (User) command;       
        
        request.getSession().setAttribute("message",
                getText("user.loggedin", user.getUsername()));
        request.getSession().setAttribute("user", user);

        return new ModelAndView(getSuccessView());
    }

    protected Object formBackingObject(HttpServletRequest request)
            throws ServletException {
        String username = request.getParameter("name");
        String password = request.getParameter("pwd");

        if ((username != null) && !username.equals("")) {
            try {
                user = mgr.login(username, password);   
            } catch (HibernateObjectRetrievalFailureException he) {
                //username does not exist
                throw new ServletException(username);
            } catch (Exception e) {
                this.logger.error("Could not login", e);
                throw new ServletException("Could not login", e);
            }

            if (user == null) {
                return new User();
            }

            return user;
        } else {
            return new User();
        }
    }


Zou dit kunnen werken? Denk het niet.
mgr is een ServiceManager die de login op de userDAO doet.
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    public User login(String username, String password) throws RepManException {
        try {
            User user = this.userDao.getUser(username);
            
            if (user != null) {
                if (!user.getPassword().equals(password)) {
                    user = null;
                }
            }
            
            return user;
        } catch (HibernateObjectRetrievalFailureException he) {
            //username does not exist
            throw new UsernameNotExistException(username);
        } catch (Exception e) {
            this.logger.error("Could not login", e);
            throw new RepManException("Could not login", e);
        }
    }

[ Voor 81% gewijzigd door Bbfreak op 17-11-2005 16:25 ]

Twitter @cmeerbeek / Halo Waypoint Profile