2013-06-17 2 views
0

ОК, поэтому я сделал основной пример отдыха, и теперь я хотел сделать еще один шаг, используя аутентификацию (логин пользователя) в моем примере.Как создать основной пример RESTful CRUD с функцией входа/аутентификации

Я использую только Java Collection для своих данных. НЕТ БАЗА ДАННЫХ !!

Я сохраняю данные пользователя на карте, где электронная почта является ключом к его паролю !!

Но я застрять в основной части аутентификации, когда запрос формы в настоящее время размещен на мой остальной -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"); 
    }  
} 

Dont знаю, что я делаю неправильно. Также должны использоваться только сборники Java (например, списки, Map.etc).

Я использую правильную технику здесь, или у кого-то есть лучшее в их решении.

Любая помощь будет оценена!

Я на окнах с использованием Apache Tomcat 6 ..

и в общей сложности NOOB НА ЭТОЙ ВЕЩИ !!

ответ

0

Чтобы сохранить постоянные данные (например, имена пользователей и пароли) без базы данных, вам следует рассмотреть возможность сохранения данных на стороне сервера текстовых файлов и чтения данных на карте в вашем конструкторе.

Однако, чем больше данных у вас есть, тем дороже этот процесс. Если у вас есть большое количество пользователей, вам действительно стоит подумать о том, чтобы использовать базы данных, потому что они более организованы, более эффективны и гораздо проще в использовании.

@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); 
     } 
    } 
Смежные вопросы