diff --git a/conf/application.xml b/conf/application.xml
index f699172ac..f23000868 100644
--- a/conf/application.xml
+++ b/conf/application.xml
@@ -19,8 +19,8 @@
-->
-
-
+
+
diff --git a/src/org/redkale/net/http/HttpUserType.java b/src/org/redkale/net/http/HttpUserType.java
index 63a3351b8..b2d0477cc 100644
--- a/src/org/redkale/net/http/HttpUserType.java
+++ b/src/org/redkale/net/http/HttpUserType.java
@@ -11,7 +11,8 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME;
/**
* 配合 HttpServlet 使用。
- * 用于指定HttpRequest.currentUser的数据类型。
+ * 用于指定HttpRequest.currentUser的数据类型。
+ * 注意: 数据类型是JavaBean,则必须要用javax.persistence.Id标记主键字段,用于确定用户ID
*
*
* 详情见: https://redkale.org
@@ -25,4 +26,5 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME;
public @interface HttpUserType {
Class value();
+
}
diff --git a/test/org/redkale/test/rest/SimpleRestServlet.java b/test/org/redkale/test/rest/SimpleRestServlet.java
index ad783ddc2..29e742e35 100644
--- a/test/org/redkale/test/rest/SimpleRestServlet.java
+++ b/test/org/redkale/test/rest/SimpleRestServlet.java
@@ -6,7 +6,8 @@ import javax.annotation.Resource;
import org.redkale.net.http.*;
import org.redkale.service.RetResult;
-public class SimpleRestServlet extends RestHttpServlet {
+@HttpUserType(UserInfo.class)
+public class SimpleRestServlet extends HttpServlet {
protected static final RetResult RET_UNLOGIN = RetCodes.retResult(RetCodes.RET_USER_UNLOGIN);
@@ -15,18 +16,15 @@ public class SimpleRestServlet extends RestHttpServlet {
@Resource
private UserService userService;
- //获取当前用户信息
- @Override
- protected UserInfo currentUser(HttpRequest req) throws IOException {
- String sessionid = req.getSessionid(false);
- if (sessionid == null || sessionid.isEmpty()) return null;
- return userService.current(sessionid);
- }
-
//普通鉴权
@Override
public void authenticate(HttpRequest request, HttpResponse response) throws IOException {
- UserInfo info = currentUser(request);
+ UserInfo info = request.currentUser();
+ if (info == null) {
+ String sessionid = request.getSessionid(false);
+ if (sessionid != null) info = userService.current(sessionid);
+ if (info != null) request.currentUser(info); //必须赋值给request.currentUser
+ }
if (info == null) {
response.finishJson(RET_UNLOGIN);
return;
diff --git a/test/org/redkale/test/rest/UserInfo.java b/test/org/redkale/test/rest/UserInfo.java
index 70c1167c7..3f9123e2e 100644
--- a/test/org/redkale/test/rest/UserInfo.java
+++ b/test/org/redkale/test/rest/UserInfo.java
@@ -1,5 +1,6 @@
package org.redkale.test.rest;
+import javax.persistence.Id;
import org.redkale.convert.json.JsonFactory;
/**
@@ -9,6 +10,7 @@ import org.redkale.convert.json.JsonFactory;
*/
public class UserInfo {
+ @Id
private int userid;
private String username = "";
diff --git a/test/org/redkale/test/rest/_DynHelloRestServlet1.java b/test/org/redkale/test/rest/_DynHelloRestServlet1.java
index 04a3fb701..7aa0c1c96 100644
--- a/test/org/redkale/test/rest/_DynHelloRestServlet1.java
+++ b/test/org/redkale/test/rest/_DynHelloRestServlet1.java
@@ -64,7 +64,7 @@ public class _DynHelloRestServlet1 extends SimpleRestServlet {
HelloEntity bean = req.getJsonParameter(HelloEntity.class, "bean");
bean.setClientaddr(req.getRemoteAddr());
bean.setResname(req.getHeader("hello-res"));
- UserInfo user = currentUser(req);
+ UserInfo user = req.currentUser();
RetResult result = service.createHello(user, bean, req.getBodyJson(Map.class));
resp.finishJson(result);
}
diff --git a/test/org/redkale/test/rest/_DynHelloRestServlet2.java b/test/org/redkale/test/rest/_DynHelloRestServlet2.java
index 81dbaef34..61dde48bd 100644
--- a/test/org/redkale/test/rest/_DynHelloRestServlet2.java
+++ b/test/org/redkale/test/rest/_DynHelloRestServlet2.java
@@ -36,7 +36,7 @@ public class _DynHelloRestServlet2 extends SimpleRestServlet {
bean.setResname(req.getHeader("hello-res"));
bean.setBodys(req.getBody());
bean.setBodystr(req.getBodyUTF8());
- UserInfo user = currentUser(req);
+ UserInfo user = req.currentUser();
RetResult result = service.createHello(user, bean);
resp.finishJson(result);
}