This commit is contained in:
@@ -19,8 +19,8 @@
|
||||
<remoteaddr value="request.headers.X-RemoteAddress"/>
|
||||
</request>
|
||||
-->
|
||||
<!-- 自定Rest实现类需要继承org.redkale.net.http.RestServlet,不自定义则默认使用org.redkale.net.http.RestServlet -->
|
||||
<rest base="org.redkale.net.http.RestServlet"/>
|
||||
<!-- base指定的自定义HttpServlet子类必须标记@HttpUserType, 不设置base则视为没有当前用户信息设置 -->
|
||||
<rest base="org.redkale.net.http.HttpServlet"/>
|
||||
|
||||
<services autoload="true"/>
|
||||
|
||||
|
||||
@@ -11,7 +11,8 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME;
|
||||
|
||||
/**
|
||||
* 配合 HttpServlet 使用。
|
||||
* 用于指定HttpRequest.currentUser的数据类型。
|
||||
* 用于指定HttpRequest.currentUser的数据类型。<br>
|
||||
* 注意: 数据类型是JavaBean,则必须要用javax.persistence.Id标记主键字段,用于确定用户ID
|
||||
*
|
||||
* <p>
|
||||
* 详情见: https://redkale.org
|
||||
@@ -25,4 +26,5 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME;
|
||||
public @interface HttpUserType {
|
||||
|
||||
Class value();
|
||||
|
||||
}
|
||||
|
||||
@@ -6,7 +6,8 @@ import javax.annotation.Resource;
|
||||
import org.redkale.net.http.*;
|
||||
import org.redkale.service.RetResult;
|
||||
|
||||
public class SimpleRestServlet extends RestHttpServlet<UserInfo> {
|
||||
@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<UserInfo> {
|
||||
@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;
|
||||
|
||||
@@ -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 = "";
|
||||
|
||||
@@ -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<HelloEntity> result = service.createHello(user, bean, req.getBodyJson(Map.class));
|
||||
resp.finishJson(result);
|
||||
}
|
||||
|
||||
@@ -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<HelloEntity> result = service.createHello(user, bean);
|
||||
resp.finishJson(result);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user