Session vertx身份验证和会话管理

Session vertx身份验证和会话管理,session,session-management,vert.x,Session,Session Management,Vert.x,我在后端使用Vert.x,在前端使用AngularJS Vert.x服务器使用POST和GET方法接收HTTP操作。不知何故,我为每个请求获得了不同的会话ID 下面是我的LoginFormHandler类句柄例程的代码片段 authProvider.authenticate(authInfo,res->{ 如果(res.successed()){ 会话=context.Session(); io.vertx.ext.auth.User=res.result(); session.put(“用户”

我在后端使用Vert.x,在前端使用AngularJS

Vert.x服务器使用POST和GET方法接收HTTP操作。不知何故,我为每个请求获得了不同的会话ID

下面是我的LoginFormHandler类句柄例程的代码片段

authProvider.authenticate(authInfo,res->{
如果(res.successed()){
会话=context.Session();
io.vertx.ext.auth.User=res.result();
session.put(“用户”,user);
req.response().setStatusCode(204.end)(“用户登录成功”);
//...
}
//...
}
我将用户对象放入当前会话中。然后我移动到新页面并向Vert.x服务器发送POST请求。在该POST处理程序中,我尝试获取会话对象:

Session Session=context.Session();
io.vertx.ext.auth.User User=session.get(“用户”);
我没有获取用户。另外,当我打印会话ID时,两个会话的值都不同

我在线程的启动例程中有以下代码

router.route().handler(CookieHandler.create());
router.route()处理程序(
create(LocalSessionStore.create(vertx));
AuthProvider ap=新的MyAuthProvider();
route().handler(UserSessionHandler.create(ap));
AuthHandler-basicAuthHandler=basicAuthHandler.create(ap);
router.route(“/Services/rest/user/auth”).handler(MyFormLoginHandler.create(ap));
router.route(“/Services/*”).handler(basicAuthHandler);

尝试使用新的处理程序进行身份验证

router.route("/Services/rest/user/auth").handler(new MyFormLoginHandler());
router.route("/Services/*").handler(basicAuthHandler);
实现如下所示的处理程序

class MyFormLoginHandler implements Handler<RoutingContext> {
public void handle(RoutingContext routingContext) {

    HttpServerResponse response = routingContext.response();
    Session session = routingContext.session();

    routingContext.request().bodyHandler(new Handler<Buffer>() {
        public void handle(Buffer buf)
        {
            ....
            for (User u : users){
               if (u.getPassword().equals(passwd)){
                  session.put("user", u.getUserName());
                  response.setStatusCode(204).end("User Authenticated");
                  break;
               }
            }
        };
    });
}
类MyFormLoginHandler实现处理程序{
公共无效句柄(RoutingContext RoutingContext){
HttpServerResponse=routingContext.response();
Session Session=routingContext.Session();
routingContext.request().bodyHandler(新处理程序(){
公共无效句柄(缓冲区buf)
{
....
for(用户u:用户){
if(u.getPassword().equals(passwd)){
session.put(“user”,u.getUserName());
response.setStatusCode(204).end(“用户已验证”);
打破
}
}
};
});
}
}

从会话访问用户

class TestRequest implements Handler<RoutingContext> {
    public void handle(RoutingContext routingContext) {
        Session session = routingContext.session();
        routingContext.request().bodyHandler(new Handler<Buffer>() {
            public void handle(Buffer buf) {
                .....
                    String userName = session.get("user");
                .....
            };
        });
    }
}
类TestRequest实现处理程序{
公共无效句柄(RoutingContext RoutingContext){
Session Session=routingContext.Session();
routingContext.request().bodyHandler(新处理程序(){
公共无效句柄(缓冲区buf){
.....
字符串userName=session.get(“用户”);
.....
};
});
}
}

尝试使用新的处理程序进行身份验证

router.route("/Services/rest/user/auth").handler(new MyFormLoginHandler());
router.route("/Services/*").handler(basicAuthHandler);
实现如下所示的处理程序

class MyFormLoginHandler implements Handler<RoutingContext> {
public void handle(RoutingContext routingContext) {

    HttpServerResponse response = routingContext.response();
    Session session = routingContext.session();

    routingContext.request().bodyHandler(new Handler<Buffer>() {
        public void handle(Buffer buf)
        {
            ....
            for (User u : users){
               if (u.getPassword().equals(passwd)){
                  session.put("user", u.getUserName());
                  response.setStatusCode(204).end("User Authenticated");
                  break;
               }
            }
        };
    });
}
类MyFormLoginHandler实现处理程序{
公共无效句柄(RoutingContext RoutingContext){
HttpServerResponse=routingContext.response();
Session Session=routingContext.Session();
routingContext.request().bodyHandler(新处理程序(){
公共无效句柄(缓冲区buf)
{
....
for(用户u:用户){
if(u.getPassword().equals(passwd)){
session.put(“user”,u.getUserName());
response.setStatusCode(204).end(“用户已验证”);
打破
}
}
};
});
}
}

从会话访问用户

class TestRequest implements Handler<RoutingContext> {
    public void handle(RoutingContext routingContext) {
        Session session = routingContext.session();
        routingContext.request().bodyHandler(new Handler<Buffer>() {
            public void handle(Buffer buf) {
                .....
                    String userName = session.get("user");
                .....
            };
        });
    }
}
类TestRequest实现处理程序{
公共无效句柄(RoutingContext RoutingContext){
Session Session=routingContext.Session();
routingContext.request().bodyHandler(新处理程序(){
公共无效句柄(缓冲区buf){
.....
字符串userName=session.get(“用户”);
.....
};
});
}
}
你说的“我没有得到用户”是什么意思?你得到的是
null
对象吗?你说的“我没有得到用户”是什么意思?你得到的是
null
对象吗?