1

我有一个使用 struts、spring、hibernate 构建的应用程序。在这个应用程序中,我想建立休息服务。此休息服务将用于 Android 应用程序。在这个应用程序中,用户和角色存储在我的数据库中。用户表中的用户名和密码以及角色表中的角色。我想问的是,如何对想要访问其余服务的客户端进行身份验证。因此,要访问静态资源服务,客户端必须先登录。如果用户尚未登录,则其余部分将始终返回字符串“not_authenticated”,例如。通常在 web 应用程序中,这使用会话。其余的也一样吗?

编辑以添加我当前的代码并更新我的问题

@POST
@Path("/login")
@Produces(MediaType.APPLICATION_JSON)
public Response login(@FormParam("username") String username,
        @FormParam("password") String password){
    MessageDto messageDto = customerService.autenticate(username, password);
    if(messageDto.getResult().equals("success")){
        return Response.ok(messageDto)
            .cookie(new NewCookie("customerId", messageDto.getMessage()))
            .build();
    }else{
        return Response.ok(messageDto)
                       .build();
    }
}

MessageDto 是一个对象,它有两个变量字符串结果和字符串消息。比如客户端登录成功,json返回是这样的

{"result":"success","message":"1-admin"}

当客户端登录不成功时

{"result":"error","message":"Your username is not registered"}
4

1 回答 1

3

登录成功时,使用带有HTTPONLY属性的Jersey 响应对象设置用户 cookie(如 userId、token 等) ,

并在您的控制器中使用@CookieParam获取该cookie ,如果未找到匹配项,则首先验证您的数据库记录,然后将其重定向到您的登录页面,否则继续。

于 2012-11-27T06:50:04.020 回答