diff --git a/xos/core/xoslib/methods/loginview.py b/xos/core/xoslib/methods/loginview.py
new file mode 100644
index 0000000..5d7ebe0
--- /dev/null
+++ b/xos/core/xoslib/methods/loginview.py
@@ -0,0 +1,57 @@
+from rest_framework.decorators import api_view
+from rest_framework.response import Response
+from rest_framework.reverse import reverse
+from rest_framework import serializers
+from rest_framework import generics
+from rest_framework.views import APIView
+from core.models import *
+from services.hpc.models import *
+from services.requestrouter.models import *
+from django.forms import widgets
+from django.core.exceptions import PermissionDenied
+from django.contrib.contenttypes.models import ContentType
+import json
+import socket
+import time
+import django.middleware.csrf
+
+class LoginView(APIView):
+    method_kind = "list"
+    method_name = "login"
+
+    def do_login(self, request, username, password):
+        if not username:
+            raise Exception("No username specified")
+
+        if not password:
+            raise Exception("No password specified")
+
+        u = User.objects.filter(email=username)
+        if not u:
+            raise Exception("User %s does not exist" % username)
+
+        u=u[0]
+
+        if not u.check_password(password):
+            raise PermissionDenied("Incorrect password")
+
+        auth = {"username": username, "password": password}
+        request.session["auth"] = auth
+        request.session.save()
+
+        return Response({"xoscsrftoken": django.middleware.csrf.get_token(request),
+                         "xossessionid": request.session.session_key})
+
+    def get(self, request, format=None):
+        username = request.GET.get("username", None)
+        password = request.GET.get("password", None)
+
+        return self.do_login(request, username, password)
+
+    def post(self, request, format=None):
+        username = request.DATA.get("username", None)
+        password = request.DATA.get("password", None)
+
+        return self.do_login(request, username, password)
+
+
