You are right, this is not very efficient, I strongly suggest using
servlets. If you do you can
place all user info you would possibly need in an httpsession.
You can in fact create a new session after athentication, you can also
create a class
containing the attributes you want to save on each session (e.g. name,
address, sex,
access code etc.).
For example:
// this is your function to verify the user agains your DB
if CheckUser(loginname, password)
{
HttpSession websession = request.getSession(true);
// Sessions is a user made class that contains the
// methods and properties you want the session to have.
Sessions thissession = new Sessions();
// 30 minutes
websession.setMaxInactiveInterval(1800);
String sessid;
// Just replace this method with one of yours.
sessid=GenericTools.generateRandomSessionCode(25);
websession.putValue("mysession",thissession);
((Sessions)websession.getValue("mysession")).setSessionCode(sessid);
((Sessions)websession.getValue("mysession")).setName(login_name);
}
getting information from your session is equally easy:
HttpSession websession = request.getSession(true);
if (websession.getValue("mysession")!=null)
{
login_name=((Sessions)websession.getValue("mysession")).getName();
}
Of course your Sessions class must have the setSessionCode, setName and
getName methods.
Hope this helps.
json
At 05:41 PM 12/18/01 -0800, you wrote:
>If anyone solves this it would be a great help to me as well. I am
>currently using a clumsy work around that doesn't always work.
>
>I have a User object that contains a lot of information about the users
>that could be very useful on various pages. I'd like to simply fill this
>object and add it to the session upon authentication for later use. I
>haven't found a way to do that yet.
>
>My work around is to do a pageContext.include() of a jsp that does the
>following on every page.
>
> String name = request.getRemoteUser();
> User user = (User)session.getAttribute("USER_OBJECT");
> if(name!=null&&user==null) {
> user = User.getUserByName(datasource, name);
> session.setAttribute("USER_OBJECT", user);
> }
>
>This has two problems though.
>1) It's a waste of time to have to do this on every page.
>2) It can create a race condition if the page it's include in needs to use
>the User object immediately. If I do the following the User object
>generally ends up being null.
>
> pageContext.include("login.jsp");
> User user = (User)session.getAttribute("USER_OBJECT");
>
>I think the ability to do this properly would be a great help to a lot of
>people and contribute to cleaner and faster servlet and jsp applications.
>Being able to specify a method that takes the username and password to be
>run on successful authentication would do it.
>
>-Cavan
>
>----- Original Message -----
>From: "Jon Weinberg" <[EMAIL PROTECTED]>
>To: <[EMAIL PROTECTED]>
>Sent: Tuesday, December 18, 2001 4:08 PM
>Subject: Session
>
>
>I am running Tomcat 4.0 with form-based authentication. I would like to
>add some user-specific variables into the session as soon as the user logs
>in (that is, as soon as the user logs in, I want to get the username from
>the form, use it to query my DB, put some results into the user's session,
>and have the user continue on to the page he originally requested.)
>
>I have tried a number of solutions that don't work:
>
>1) I've tried having the login form's action send the info to a servlet
>that does the processing and then forwards the request to
>"j_security_check", but that solution only works in 3.2 and not in 4.0
>
>2) I have attached an HttpSessionListener, but since the session is
>created before the user actually logs in, my listener does not yet have
>the username and cannot complete the preprocessing.
>
>Is there a way for me to execute something right AFTER a user authenticates?
>
>Thanks,
>Jon
>
>
>
>--
>To unsubscribe: <mailto:[EMAIL PROTECTED]>
>For additional commands: <mailto:[EMAIL PROTECTED]>
>Troubles with the list: <mailto:[EMAIL PROTECTED]>
--
To unsubscribe: <mailto:[EMAIL PROTECTED]>
For additional commands: <mailto:[EMAIL PROTECTED]>
Troubles with the list: <mailto:[EMAIL PROTECTED]>