Вы добавили код в контроллер класса MainController
, который приведен в примере, указанном на сайте mkyong.
@RequestMapping(value = "/admin**", method = RequestMethod.GET)
public ModelAndView adminPage() {
ModelAndView model = new ModelAndView();
model.addObject("title", "Spring Security + Hibernate Example");
model.addObject("message", "This page is for ROLE_ADMIN only!");
model.setViewName("admin");
String fullName = ...; // Add the required logic to get the full name.
model.addObject("FullName", fullName); // Then add the fullName to your model object
return model;
}
Затем окончательно отредактировать файл admin.jsp
для отображения полного имени.
Update:
Необходимый код также доступен в mkyong ссылке. Вот фрагмент, взятый с той же страницы:
В классе UserDaoImpl.java есть весь код, необходимый для вашей функциональности.
List<User> users = new ArrayList<User>();
users = sessionFactory.getCurrentSession()
.createQuery("from User where username=?")
.setParameter(0, username)
.list();
if (users.size() > 0) {
return users.get(0);
} else {
return null;
}
Когда вы получаете объект пользователя из зимуют он загружает все свойства пользователя, как вы добавили новое поле - FullName, то это поле будет загружаться в объект пользователя с помощью спящего режима, если у вас есть собственное отображение в HBM файлов.
Эта логика вызывается из класса обслуживания MyUserDetailsService
с использованием метода loadUserByUsername
. Поэтому воспользуйтесь этим методом из класса сервиса, чтобы получить информацию о пользователе, предоставив входной параметр username
.
код от класса обслуживания:
@Transactional(readOnly=true)
@Override
public UserDetails loadUserByUsername(final String username) throws UsernameNotFoundException {
com.mkyong.users.model.User user = userDao.findByUserName(username);
List<GrantedAuthority> authorities = buildUserAuthority(user.getUserRole());
return buildUserForAuthentication(user, authorities);
}
// Converts com.mkyong.users.model.User user to
// org.springframework.security.core.userdetails.User
private User buildUserForAuthentication(com.mkyong.users.model.User user, List<GrantedAuthority> authorities) {
return new User(user.getUsername(), user.getPassword(), user.isEnabled(), true, true, true, authorities);
}
Как вы можете видеть здесь, из приведенного выше кода, новый объект пользователя создается в строке:
new User(user.getUsername(), user.getPassword(), user.isEnabled(), true, true, true, authorities);
холмик обновление этой линии включить полное имя а также добавить требуемый конструктор в класс User.
Спасибо, но меня интересует логика, например. – Roberto
@Roberto, вы пробовали понять пример, приведенный на сайте mkyong? Весь код присутствует в этом примере, просто вам нужно добавить очень мало строк, чтобы добавить FullName. Я обновил свой ответ с подробностями о том, как вы можете это сделать. – Chaitanya
Спасибо, теперь яснее. Мой единственный вопрос. Он преобразует свой собственный класс User в org.springframework.security.core.userdetails.User. И этот класс не имеет конструктора с полным именем. Итак, нужно ли создать собственный класс UserDetails, переопределить orginial.Или что мне нужно делать? – Roberto