Session vertx身份验证和会话管理
我在后端使用Vert.x,在前端使用AngularJS Vert.x服务器使用POST和GET方法接收HTTP操作。不知何故,我为每个请求获得了不同的会话ID 下面是我的LoginFormHandler类句柄例程的代码片段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(“用户”
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
对象吗?