Индивидуальная Spring Security без Spring MVC - PullRequest
2 голосов
/ 22 марта 2012
  1. Я использую собственную реализацию MVC, и я не уверен, не спроектирован ли Spring Security специально для реализации Spring MVC.Можно ли его использовать?

  2. Мне неясно, какие части Spring Security мне следует использовать, а какие нет.Я предполагаю, что мне не нужны фильтры URL, поскольку мне нужно проверить доступ конкретно по параметрам URL в моих контроллерах (например, чтобы проверить, является ли Пользователь владельцем Статья ).Что-то вроде:

    if (request.getUser().isAllowedTo("EditArticle", 27)) {...}
    if (request.getUser().isAllowedTo("CategoryManager", 123)) {...}
    if (request.getUser().isInRole("Admin")) {...}
    
  3. Я не смог найти какой-то понятный способ входа / выхода пользователей программным способом.Я реализовал свои классы UserDetails и UserDetailsService для работы с пользователями с JPA, но я не вижу способа, как я могу продолжить вход и выход из системы в моих контроллерах.

РЕДАКТИРОВАТЬ:

Я не вижу способа, как вставить <form> в мои шаблоны Freemarker - единственный способ создать форму, которую я нашел, с помощью:

<http pattern="/login.htm*" security="none"/>
    <form-login login-page="/login.htm" default-target-url="/home.htm"/>
</http>

Как я могу настроить структуру формы входа?Могу ли я создать его самостоятельно?

Больше всего мне хотелось бы иметь возможность обрабатывать вход самостоятельно (например, с помощью DWR) и не использовать магию j_security_checks ...

Было бы здорово, если бы я мог обработать запрос на вход в систему самостоятельно и попросить службу аутентификации самостоятельно войти в систему для пользователя (чтобы я мог легко использовать Direct Web Remoting (DWR)):

 if (user.username.ok() and user.password.ok()) {
     authService.setUser(user);
     authService.setLoggedIn(true);
 }

1 Ответ

3 голосов
/ 22 марта 2012
  1. Безопасность Spring не ограничивается Spring mvc и может использоваться с вашей собственной реализацией платформы. Он предоставляет удобные сервисы для аутентификации и управления сеансами.

  2. Spring очень удобно использовать для получения доступа к определенным URL-адресам, но не ограничиваясь ими. Вы сможете узнать, какие роли выполняет текущий пользователь в данный момент из контекста Spring, и всю пользовательскую информацию, которую вы включили бы в свой объект UserDetails. Есть несколько способов ограничить доступ к определенным действиям определенными ролями. Однако код вроде if (request.getUser().isAllowedTo("EditArticle", 27)) {...} Я думаю, что будет проще проверить самостоятельно.

  3. Вход и выход из системы осуществляются путем вызова определенных URL-адресов. Для входа в систему: / j_spring_security_check. Для выхода из системы: /j_spring_security_logout.

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