Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何创建具有登录/身份验证功能的基本Jersey RESTful CRUD示例_Rest_Login_Jersey_Crud - Fatal编程技术网

如何创建具有登录/身份验证功能的基本Jersey RESTful CRUD示例

如何创建具有登录/身份验证功能的基本Jersey RESTful CRUD示例,rest,login,jersey,crud,Rest,Login,Jersey,Crud,好的,我已经做了一个基本的rest示例,现在我想通过在我的示例中使用身份验证(用户登录)更进一步 我只对我的数据使用Java集合。没有数据库 我将用户数据存储在地图中,其中电子邮件是其密码的密钥 但是我在基本的身份验证部分遇到了麻烦,表单请求被发布到我的rest-post方法中,它从用户那里获取值……类似于这样: @POST @Produces(MediaType.TEXT_HTML) @Consumes(MediaType.APPLICATION_FORM_URLENCODED,

好的,我已经做了一个基本的rest示例,现在我想通过在我的示例中使用身份验证(用户登录)更进一步

我只对我的数据使用Java集合。没有数据库

我将用户数据存储在地图中,其中电子邮件是其密码的密钥

但是我在基本的身份验证部分遇到了麻烦,表单请求被发布到我的rest-post方法中,它从用户那里获取值……类似于这样:

@POST
@Produces(MediaType.TEXT_HTML)
@Consumes(MediaType.APPLICATION_FORM_URLENCODED,
        public void newUser(
        @FormParam("email") String email,
        @FormParam("password") String password,@ContextHttpServletResponse servletResponse
) throws IOException {

    // Form Processing algo
if(emailexists){
servletResponse.sendRedirect("http://localhost:8080/xxx/LoginFailed.html");
  }
else{
    servletResponse.sendRedirect("http://localhost:8080/xxx/UserHomPage.html");
  }    
}
我不知道我做错了什么。。 此外,只能使用Java集合(如列表、映射等)

我在这里使用的是正确的技术,还是其他人有更好的技术

任何帮助都将不胜感激

我在windows上使用apache tomcat 6

对这件事简直是无稽之谈

> P>保存数据库中的持久数据(如用户名和密码)时,应考虑将数据保存在文本文件服务器端,并将数据读回到构造函数中的映射中。 但是,数据越多,此过程的成本就越高。如果你有大量的用户,你真的应该考虑使用数据库,因为它们更有条理,更有效率,更容易使用。
    @Path("myPath")
    public class MyResource {

        private static final String FILE_PATH="my/path/to/userdata.txt";

        private HashMap<String, String> _userData;

        public MyResource() {
            try {
                Scanner scanner = new Scanner(new File(FILE_PATH));
                _userData = new HashMap<String, String>();
                while(scanner.hasNext()) {
                    String[] line = scanner.nextLine().split(",");
                    _userData.put(line[0].trim(), line[1].trim());
                }
            } catch(IOException e) {
                e.printStackTrace();
            }
        }

        @POST
        @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
        public Response addNewUser(@FormParam("email") String email,
                                   @FormParam("password") String password)
                                   throws IOException {

            PrintWriter writer = new PrintWriter(new File(FILE_PATH));
            int statusCode = 200;
            // If that email already exists, don't print to file
            if(_userData.containsKey(email))
                statusCode = 400;
            else
                writer.println(email + "," + password);
            writer.close();
            return Response.status(statusCode);
        }
    }
@Path(“myPath”)
公共类MyResource{
私有静态最终字符串文件\u PATH=“my/PATH/to/userdata.txt”;
私有HashMap_用户数据;
公共资源(){
试一试{
Scanner Scanner=新扫描仪(新文件(文件路径));
_userData=newhashmap();
while(scanner.hasNext()){
String[]line=scanner.nextLine().split(“,”);
_userData.put(第[0].trim()行,第[1].trim()行);
}
}捕获(IOE异常){
e、 printStackTrace();
}
}
@职位
@使用(MediaType.APPLICATION\u FORM\u URLENCODED)
公共响应addNewUser(@FormParam(“电子邮件”)字符串电子邮件,
@FormParam(“密码”)字符串(密码)
抛出IOException{
PrintWriter writer=新的PrintWriter(新文件(文件路径));
int statusCode=200;
//如果该电子邮件已存在,请不要打印到文件
如果(_userData.containsKey(电子邮件))
状态代码=400;
其他的
writer.println(电子邮件+”,“+密码);
writer.close();
返回响应状态(statusCode);
}
}