Программирование Регистрация пользователя в веб-приложении Java Spring MVC - PullRequest
1 голос
/ 25 февраля 2011

Я создаю веб-приложение, где я создаю первый этап с регистрацией пользователя и логином.

Я думаю о

class User 
{
    private userid;
    private firstname
    .........
    //getters and setters
}

class UserService {

    public boolean authenticate(username, password) {}
    public addUser()
    public saveuser()
    public ConfirmEmail()
    public resetPassword()
    ......

}

У меня есть несколько вопросов

  1. Правильный ли мой подход?
  2. Также у меня есть функция diff в интерфейсе пользователя и для администратора-администратора бэкэнда, так что я должен поместить все в один класс или мне нужно сделать diff для интерфейса и бэкенда?
  3. Поскольку это самая распространенная вещь, которая требуется каждой организации, можно ли найти ее в Интернете, чтобы я мог видеть, как к этому подходят корпоративные люди?

Ответы [ 2 ]

5 голосов
/ 25 февраля 2011

Во-первых, я бы посмотрел, можете ли вы использовать другую систему аутентификации, такую ​​как Google или Facebook, или Open ID (StackOverflow использует их и другие).

Во-вторых, я бы посмотрел на использование системы безопасностифреймворк, такой как Spring Security .

Наконец, если вы хотите / хотите сделать это самостоятельно с нуля, вот несколько указателей

  • Всегда храните пароли, используяодносторонний механизм хеширования, например, SHA
  • Используйте salt при хешировании вашего пароля - у вас должно быть случайное значение соли для пароля (см. этот вопрос SO для его длины)
  • Вы также можете иметь постоянное значение соли для всего приложения, которое не сохраняется рядом с паролем
  • Дайте пользователям роли.Это решит проблему ваших пользователей переднего плана / конечных пользователей

Я предполагаю, что вы используете базу данных.Вот пример схемы (MySQL)

CREATE TABLE users (
  id INTEGER UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT
  mail VARCHAR(255) NOT NULL,
  name VARCHAR(255) NOT NULL,
  enc_password VARCHARCHAR(64) NOT NULL,
  salt CHAR(8) NOT NULL,
  is_mail_authenticated TINYINT(1) UNSIGNED NOT NULL DEFAULT 0,
  UNIQUE KEY (mail)
) ENGINE = InnoDB;

CREATE TABLE roles (
  id INTEGER UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT
  name VARCHAR(32) NOT NULL,
  UNIQUE KEY (name)
) ENGINE = InnoDB;

CREATE TABLE users_roles (
  user_id NTEGER UNSIGNED NOT NULL,
  role_id NTEGER UNSIGNED NOT NULL,
  FOREIGN KEY (user_id) REFERENCES users (id),
  FOREIGN KEY (roel_id) REFERENCES roles (id),
) ENGINE = InnoDB;

Это будет сделано для очень простой пользовательской модели.Вам понадобится инструмент для генерации соли.Я бы использовал randomAlphanumeric от Apache commons lang.

Вы можете захотеть добавить некоторые вещи для блокировки учетных записей пользователей после слишком большого количества неудачных попыток входа в систему.И вы можете отслеживать IP-адрес, с которого они вошли в систему.Это оставлено читателю в качестве упражнения:)

Я добавил поле is_mail_authenticated, чтобы отслеживать, аутентифицировал ли пользователь свою почту.Обычно это достигается путем нажатия на ссылку в электронном письме.

0 голосов
/ 25 февраля 2011

Я думаю, Spring предоставляет очень хороший подход для создания пользователя с назначением роли и мощной аутентификации пользователя, а также для обеспечения безопасности или вашего приложения. Не нужно реализовывать целое как наше собственное приложение, вы можете использовать Spring Security. http://static.springsource.org/spring-security/site/start-here.html

Либо вы можете создать пользователей самостоятельно, чтобы выполнить аутентификацию, используя вышеуказанные плагины безопасности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...