diff --git a/IdentService/build/web/WEB-INF/classes/org/IdentService/login.class b/IdentService/build/web/WEB-INF/classes/org/IdentService/login.class
index 277a3c5f67972f286188ac1932a28efae5576215..4bff7d5e3e6e7aa58fa413b5f7b8e0205739e2db 100644
Binary files a/IdentService/build/web/WEB-INF/classes/org/IdentService/login.class and b/IdentService/build/web/WEB-INF/classes/org/IdentService/login.class differ
diff --git a/IdentService/src/java/org/IdentService/login.java b/IdentService/src/java/org/IdentService/login.java
index bbe0bf9e8e34fefbe9993c6601a45974f10e8700..c5c2b256f03f50db8f2bd8f37cb323eacd638272 100644
--- a/IdentService/src/java/org/IdentService/login.java
+++ b/IdentService/src/java/org/IdentService/login.java
@@ -160,34 +160,11 @@ public class login extends HttpServlet {
         return "Short description";
     }// </editor-fold>
     
-    private static final String[] HEADERS_TO_TRY = { 
-    "X-Forwarded-For",
-    "Proxy-Client-IP",
-    "WL-Proxy-Client-IP",
-    "HTTP_X_FORWARDED_FOR",
-    "HTTP_X_FORWARDED",
-    "HTTP_X_CLUSTER_CLIENT_IP",
-    "HTTP_CLIENT_IP",
-    "HTTP_FORWARDED_FOR",
-    "HTTP_FORWARDED",
-    "HTTP_VIA",
-    "REMOTE_ADDR" };
-    
     public String generateToken(HttpServletRequest request){
         String token;
         String user_agent = request.getParameter("user_agent");
-        String ip = getClientIpAddress(request);
+        String ip = request.getParameter("ip");
         token = tokenGenerator.nextString() + "|" + user_agent + '|' + ip;
         return token;
     }
-
-    public static String getClientIpAddress(HttpServletRequest request) {
-        for (String header : HEADERS_TO_TRY) {
-            String ip = request.getHeader(header);
-            if (ip != null && ip.length() != 0 && !"unknown".equalsIgnoreCase(ip)) {
-                return ip;
-            }
-        }
-        return request.getRemoteAddr();
-    }
 }
diff --git a/KAA-JSP/build/web/WEB-INF/classes/org/saleproject/KAA/tokenParser.class b/KAA-JSP/build/web/WEB-INF/classes/org/saleproject/KAA/tokenParser.class
index 6e50e3a5a8bca4fa92971654320dcc93e699139e..a0130494cc1ec901acfdcb72b58e81e9d8519dbc 100644
Binary files a/KAA-JSP/build/web/WEB-INF/classes/org/saleproject/KAA/tokenParser.class and b/KAA-JSP/build/web/WEB-INF/classes/org/saleproject/KAA/tokenParser.class differ
diff --git a/KAA-JSP/build/web/catalog.jsp b/KAA-JSP/build/web/catalog.jsp
index 4fb91299f650708cfbad429ea0dcf9fd105d6428..f6fe673e4ff4d055dad28edb03e3f8d0654b4f08 100644
--- a/KAA-JSP/build/web/catalog.jsp
+++ b/KAA-JSP/build/web/catalog.jsp
@@ -4,6 +4,8 @@
     Author     : khrs
 --%>
 
+<%@page import="org.saleproject.KAA.GetIP"%>
+<%@page import="org.saleproject.KAA.tokenParser"%>
 <%@page import="java.io.FileInputStream"%>
 <%@page import="org.kaa.marketplaceservice.service.ProcedureStatus"%>
 <%@page import="org.saleproject.KAA.RestAPI_consumer"%>
@@ -51,6 +53,29 @@
             <div class="information">
                 <span>
                     <%
+                        /* handler */
+                        String user_token = request.getParameter("token");
+                        String tokenBrowser =  tokenParser.parseBrowser(user_token);
+                        String tokenIP = tokenParser.parseIP(user_token);
+                        System.out.println(tokenBrowser+" "+tokenIP);
+                        String useragent = request.getHeader("user-agent");
+                        String userIP = GetIP.getClientIpAddress(request);
+                        System.out.println(useragent+" "+ userIP);
+                        if (!tokenBrowser.equals(useragent) || !tokenIP.equals(userIP)){
+                            String ParameterURL1 = "token=" + user_token;
+                            String APIURL1 = "http://localhost:8080/IdentService/logout?";
+                            RestAPI_consumer consumer1 = new RestAPI_consumer(APIURL1, ParameterURL1);
+                            consumer1.execute();
+                            JSONObject responseJSON1 = consumer1.getOutput();
+                            String status1 = (String) responseJSON1.get("status");
+                            if (status1.equals("OK")) {
+                                response.sendRedirect("http://localhost:8080/KAA-JSP/login.jsp?"
+                                        + "message=tokeninvalid");
+                            } else {
+                                response.sendRedirect("http://localhost:8080/KAA-JSP/catalog."
+                                        + "jsp?token=" + user_token);
+                            }
+                        }
                         JSONObject responseJSON = new JSONObject();
                         JSONObject responseJSON1 = new JSONObject();
                         org.kaa.marketplaceservice.service.MarketPlaceService_Service service = new org.kaa.marketplaceservice.service.MarketPlaceService_Service();
@@ -63,7 +88,6 @@
                         String urlRequest2 = "http://localhost:8080/ChatService/RetrieveStatus?";
 
                         /* Showing username of user */
-                        String user_token = request.getParameter("token");
                         if (request.getParameter("like") != null) {
                             String productId = request.getParameter("product_id");
                             boolean like;
diff --git a/KAA-JSP/build/web/login.jsp b/KAA-JSP/build/web/login.jsp
index 90300e56a2c1e9880784dd22c1a3751677a9ae09..6e5775b7bc6ec322366fdb1cce306c88a15cd12c 100644
--- a/KAA-JSP/build/web/login.jsp
+++ b/KAA-JSP/build/web/login.jsp
@@ -1,3 +1,4 @@
+<%@page import="org.saleproject.KAA.GetIP"%>
 <%@page import="org.saleproject.KAA.RestAPI_consumer"%>
 <%@page import="org.json.simple.parser.JSONParser"%>
 <%@page import="java.net.HttpURLConnection"%>
@@ -18,8 +19,9 @@
                 String user = request.getParameter("username");
                 String pass = request.getParameter("password");
                 String userAgent = request.getHeader("user-agent");
+                String userIP = GetIP.getClientIpAddress(request);
                 String urlParameter = "username=" + user + "&password=" + pass +
-                        "&user_agent=" + userAgent;
+                        "&user_agent=" + userAgent + "&ip=" + userIP;
                 String urlRequest = "http://localhost:8080/IdentService/login?";
                 RestAPI_consumer consumer = new RestAPI_consumer(urlRequest, urlParameter);
                 consumer.executePost();
diff --git a/KAA-JSP/src/java/org/saleproject/KAA/GetIP.java b/KAA-JSP/src/java/org/saleproject/KAA/GetIP.java
new file mode 100644
index 0000000000000000000000000000000000000000..43e53151726ff6f8e69f61cd6b3a853230e3ae9d
--- /dev/null
+++ b/KAA-JSP/src/java/org/saleproject/KAA/GetIP.java
@@ -0,0 +1,39 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package org.saleproject.KAA;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ *
+ * @author Ali-pc
+ */
+
+
+public class GetIP {
+    private static final String[] HEADERS_TO_TRY = { 
+    "X-Forwarded-For",
+    "Proxy-Client-IP",
+    "WL-Proxy-Client-IP",
+    "HTTP_X_FORWARDED_FOR",
+    "HTTP_X_FORWARDED",
+    "HTTP_X_CLUSTER_CLIENT_IP",
+    "HTTP_CLIENT_IP",
+    "HTTP_FORWARDED_FOR",
+    "HTTP_FORWARDED",
+    "HTTP_VIA",
+    "REMOTE_ADDR" };
+    
+    public static String getClientIpAddress(HttpServletRequest request) {
+        for (String header : HEADERS_TO_TRY) {
+            String ip = request.getHeader(header);
+            if (ip != null && ip.length() != 0 && !"unknown".equalsIgnoreCase(ip)) {
+                return ip;
+            }
+        }
+        return request.getRemoteAddr();
+    }
+}
diff --git a/KAA-JSP/src/java/org/saleproject/KAA/tokenParser.java b/KAA-JSP/src/java/org/saleproject/KAA/tokenParser.java
index 7e0880e02ee8da0c707feeafa53970088bdf67b1..e289e6c00eac1db88c38497c740cc71fb1e96092 100644
--- a/KAA-JSP/src/java/org/saleproject/KAA/tokenParser.java
+++ b/KAA-JSP/src/java/org/saleproject/KAA/tokenParser.java
@@ -12,16 +12,17 @@ package org.saleproject.KAA;
 public class tokenParser {
     public static String parseBrowser(String token){
         int i = 0;
-        String result = null;
+        String result = "";
         int countHastag = 0;
         while (i < token.length()){
             char x = token.charAt(i);
+            if (x == '|'){
+                countHastag++;
+                i++;
+            }
             if (countHastag == 1){
                 result += token.charAt(i);
             }
-            if (x == '#'){
-                countHastag++;
-            }
             i++;
         }
         return result;
@@ -29,16 +30,17 @@ public class tokenParser {
     
     public static String parseIP(String token){
         int i = 0;
-        String result = null;
+        String result = "";
         int countHastag = 0;
         while (i < token.length()){
             char x = token.charAt(i);
+            if (x == '|'){
+                countHastag++;
+                i++;
+            }
             if (countHastag == 2){
                 result += token.charAt(i);
             }
-            if (x == '#'){
-                countHastag++;
-            }
             i++;
         }
         return result;
diff --git a/KAA-JSP/web/catalog.jsp b/KAA-JSP/web/catalog.jsp
index 4fb91299f650708cfbad429ea0dcf9fd105d6428..f6fe673e4ff4d055dad28edb03e3f8d0654b4f08 100644
--- a/KAA-JSP/web/catalog.jsp
+++ b/KAA-JSP/web/catalog.jsp
@@ -4,6 +4,8 @@
     Author     : khrs
 --%>
 
+<%@page import="org.saleproject.KAA.GetIP"%>
+<%@page import="org.saleproject.KAA.tokenParser"%>
 <%@page import="java.io.FileInputStream"%>
 <%@page import="org.kaa.marketplaceservice.service.ProcedureStatus"%>
 <%@page import="org.saleproject.KAA.RestAPI_consumer"%>
@@ -51,6 +53,29 @@
             <div class="information">
                 <span>
                     <%
+                        /* handler */
+                        String user_token = request.getParameter("token");
+                        String tokenBrowser =  tokenParser.parseBrowser(user_token);
+                        String tokenIP = tokenParser.parseIP(user_token);
+                        System.out.println(tokenBrowser+" "+tokenIP);
+                        String useragent = request.getHeader("user-agent");
+                        String userIP = GetIP.getClientIpAddress(request);
+                        System.out.println(useragent+" "+ userIP);
+                        if (!tokenBrowser.equals(useragent) || !tokenIP.equals(userIP)){
+                            String ParameterURL1 = "token=" + user_token;
+                            String APIURL1 = "http://localhost:8080/IdentService/logout?";
+                            RestAPI_consumer consumer1 = new RestAPI_consumer(APIURL1, ParameterURL1);
+                            consumer1.execute();
+                            JSONObject responseJSON1 = consumer1.getOutput();
+                            String status1 = (String) responseJSON1.get("status");
+                            if (status1.equals("OK")) {
+                                response.sendRedirect("http://localhost:8080/KAA-JSP/login.jsp?"
+                                        + "message=tokeninvalid");
+                            } else {
+                                response.sendRedirect("http://localhost:8080/KAA-JSP/catalog."
+                                        + "jsp?token=" + user_token);
+                            }
+                        }
                         JSONObject responseJSON = new JSONObject();
                         JSONObject responseJSON1 = new JSONObject();
                         org.kaa.marketplaceservice.service.MarketPlaceService_Service service = new org.kaa.marketplaceservice.service.MarketPlaceService_Service();
@@ -63,7 +88,6 @@
                         String urlRequest2 = "http://localhost:8080/ChatService/RetrieveStatus?";
 
                         /* Showing username of user */
-                        String user_token = request.getParameter("token");
                         if (request.getParameter("like") != null) {
                             String productId = request.getParameter("product_id");
                             boolean like;
diff --git a/KAA-JSP/web/login.jsp b/KAA-JSP/web/login.jsp
index 90300e56a2c1e9880784dd22c1a3751677a9ae09..6e5775b7bc6ec322366fdb1cce306c88a15cd12c 100644
--- a/KAA-JSP/web/login.jsp
+++ b/KAA-JSP/web/login.jsp
@@ -1,3 +1,4 @@
+<%@page import="org.saleproject.KAA.GetIP"%>
 <%@page import="org.saleproject.KAA.RestAPI_consumer"%>
 <%@page import="org.json.simple.parser.JSONParser"%>
 <%@page import="java.net.HttpURLConnection"%>
@@ -18,8 +19,9 @@
                 String user = request.getParameter("username");
                 String pass = request.getParameter("password");
                 String userAgent = request.getHeader("user-agent");
+                String userIP = GetIP.getClientIpAddress(request);
                 String urlParameter = "username=" + user + "&password=" + pass +
-                        "&user_agent=" + userAgent;
+                        "&user_agent=" + userAgent + "&ip=" + userIP;
                 String urlRequest = "http://localhost:8080/IdentService/login?";
                 RestAPI_consumer consumer = new RestAPI_consumer(urlRequest, urlParameter);
                 consumer.executePost();