Java tutorial
/* * Copyright (c) 2008 - 2013 10gen, Inc. <http://10gen.com> * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * http://www.apache.org/licenses/LICENSE-2.0 * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package course; import java.security.SecureRandom; import org.apache.commons.codec.binary.Base64; import com.mongodb.BasicDBObject; import com.mongodb.DB; import com.mongodb.DBCollection; import com.mongodb.DBObject; public class SessionDAO { private final DBCollection sessionsCollection; public SessionDAO(final DB blogDatabase) { sessionsCollection = blogDatabase.getCollection("sessions"); } public String findUserNameBySessionId(String sessionId) { DBObject session = getSession(sessionId); if (session == null) { return null; } else { return session.get("username").toString(); } } // starts a new session in the sessions table public String startSession(String username) { // get 32 byte random number. that's a lot of bits. SecureRandom generator = new SecureRandom(); byte randomBytes[] = new byte[32]; generator.nextBytes(randomBytes); // result = new Base64().encodeToString(rawHmac); // BASE64Encoder encoder = new BASE64Encoder(); // String sessionID = encoder.encode(randomBytes); String sessionID = new Base64().encodeToString(randomBytes); // build the BSON object BasicDBObject session = new BasicDBObject("username", username); session.append("_id", sessionID); sessionsCollection.insert(session); return session.getString("_id"); } // ends the session by deleting it from the sesisons table public void endSession(String sessionID) { sessionsCollection.remove(new BasicDBObject("_id", sessionID)); } // retrieves the session from the sessions table public DBObject getSession(String sessionID) { return sessionsCollection.findOne(new BasicDBObject("_id", sessionID)); } }