Cześć robię logowanie przy użyciu security basic, nigdy wcześniej nie pracowałem ze Springiem. Robię back-end i kolega front-end potrzebuje zrobić kontroler który będzie pobierał login i hasło. Jak napisać taki kontroler? Umiem napisać taki żeby zwracał widok jsp albo pobierał z jsp dane ale nie wiem jak zrobić żeby działał czysto back-endowo, zebym uzyc rest? Zeby pierw wyswitlił okno do logowania a pozniej pobral login i haslo
Jak użyć rest przy logowaniu security basic?
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Space: the final frontier
- Postów: 26433
Nie do końca rozumiem pytanie. Przecież skoro używanie spring security to wystarczy że zaimplementujesz sobie UserDetailsService i skonfigurujesz poprawnie Spring Security żeby go używać. Żadnych kontrolerów pisać nie musisz.
Pierwszy link z google:
http://www.javablog.eu/java/implementacja-uwierzytelniania-w-spring-security/ ;]
- Rejestracja: dni
- Ostatnio: dni
czyli nie potrzebuje kontrolera zeby przetworzyć zadanie logowani które przyjdzie od front-endu ? Mam zrobioną rejestracje. Mam kotroler, DAO, service i model. Dane zapsuja mi się do bazy ( login i haslo) przez Hibernate. Jak mogę pobrać login i haslo w momencie logowania? Czy mogę zrobić to na poziomie XML ? Przepraszam za takie banalne pytania ale springiem zajelem sie od 1,5 tyg
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Space: the final frontier
- Postów: 26433
Czy ten artykuł który podałem gryzie? o_O Nawet na niego nie zerknąłeś!
No całkiem XMLem to nie, ale wystarczy ze napiszesz sobie UserDetailsProvider który będzie sie zajmował sprawdzeniem czy user sie moze zalogować.
W xmlu będziesz miał:
<authentication-manager>
<authentication-provider user-service-ref='myUserDetailsService' />
</authentication-manager>
<bean id="myUserDetailsService" class="pakiet.MyUserDataService" />
Implementujesz tą jedna klasę i voila!
- Rejestracja: dni
- Ostatnio: dni
Dziękuję za odpowiedz. A jak mogę to zmienić żeby działał z rest-em?
@RequestMapping(value = "new", method = RequestMethod.GET )
public String getRegistrationForm(Model model){
log.info("View registrationForm ");
model.addAttribute("account", new AccountForm());
return "users/registartionForm";
}
@RequestMapping(value = "", method = RequestMethod.POST)
public String postRegistrationForm(@ModelAttribute("account")
@Valid AccountForm form,
BindingResult bindingResult){
convertPasswordError(bindingResult);
accountService.registerAccount(toAccount(form), form.getPassword(), bindingResult);
log.info("Create registration : ", form);
return "redirect:registration_ok";
}
private Account toAccount(AccountForm form){
Account account = new Account();
account.setEmail(form.getEmail());
return account;
}
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Space: the final frontier
- Postów: 26433
Nie bardzo rozumiem pytanie. Co to u ciebie znaczy "działać z restem"? Żeby nie generować widoku tylko zwrócić jsona jakiegoś? W Spring 4 masz nową adnotacje @RestController
http://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/bind/annotation/RestController.html
Jeśli używasz wcześniejsze wersji Springa to musisz dodać @ResponseBody do sygnatury metody która ma zwracać tego jsona.
- Rejestracja: dni
- Ostatnio: dni
wlasnie mi o to chodziło dziękuje. A w samym kodzie muszę coś zmieniać, oprócz dodania @...?
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Space: the final frontier
- Postów: 26433
Jeśli pchasz same stringi to nie musisz. Jakbyś chciał serializować obiekty jako jsona to musisz to odpowiednio skonfigurować.
Tutaj masz przykład: https://github.com/Pharisaeus/SpringScaffoldApplication/blob/master/src/main/webapp/WEB-INF/spring-context.xml