Есть проект web приложения с использованием Spring security с использованием бд со следующей структурой:
Дело в том, что мой spring security, по какой-то причине, не авторизует меня даже если я ввожу пароль и логин те, что есть в базе данных. После ввода он опять перебрасывает меня на страницу авторизации. Возможно я допустил ошибку в написании CustomUserDetails и LoginService,который имплементит UserDetailsService. web.xml у меня содержит только :
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
</web-app>
так как все конфиги у меня заданы в Java классах. WebConfig:
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "web.controller")
@Import({ SecurityConfig.class })
public class WebConfig implements WebMvcConfigurer {
@Bean
public ViewResolver viewResolver() {
InternalResourceViewResolver bean = new InternalResourceViewResolver();
bean.setViewClass(JstlView.class);
bean.setPrefix("/WEB-INF/views/");
bean.setSuffix(".jsp");
return bean;
}
}
SpringConfig:
@Configuration
public class SpringConfig {
@Bean
public JdbcTemplate getJdbcTemplate(){
return new JdbcTemplate(getDataSource());
}
@Bean
public DataSource getDataSource() {
DriverManagerDataSource dataSource=new DriverManagerDataSource();
dataSource.setUrl("jdbc:mysql://localhost:3306/vebinar?useSll=false&useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC");
dataSource.setUsername("root");
dataSource.setPassword("Magdenberg");
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
return dataSource;
}
@Bean
public UserDao getUserDao(){
return new UserDaoIml(getJdbcTemplate());
}
@Bean
public UserService getUserService(){
return new UserServiceImpl();
}
@Bean
public LoginService getLoginService(){
return new LoginService();
}
@Bean
public CommonsMultipartResolver multipartResolver() {
CommonsMultipartResolver resolver=new CommonsMultipartResolver();
resolver.setDefaultEncoding("utf-8");
return resolver;
}
}
SecurutyConfig:
@EnableGlobalMethodSecurity(prePostEnabled = true)
@EnableWebSecurity
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
LoginService loginService;
@Autowired
DataSource dataSource;
@Bean
public AuthenticationSuccessHandler myAuthenticationSuccessHandler(){
return new MySimpleUrlAuthenticationSuccessHandler();
}
private PasswordEncoder getPasswordEncoder() {
return new PasswordEncoder() {
@Override
public String encode(CharSequence charSequence) {
return charSequence.toString();
}
@Override
public boolean matches(CharSequence charSequence, String s) {
return true;
}
};
}
@Override
public void configure(AuthenticationManagerBuilder auth)
throws Exception {
auth.jdbcAuthentication().dataSource(dataSource).usersByUsernameQuery(
"select user.nickname,user.password from alexeydb.user where nickname=?")
.authoritiesByUsernameQuery(
"select roles.nickname, roles.authority from alexeydb.roles where nickname=?")
.passwordEncoder(getPasswordEncoder());
auth.userDetailsService(loginService);
}
@Override
protected void configure(HttpSecurity http) throws Exception{
http.csrf().disable();
http.authorizeRequests().antMatchers("/**").authenticated()
.anyRequest().permitAll()
.and().formLogin().loginProcessingUrl( "/login" ).loginPage("/login").permitAll()
.and().formLogin()
//.successHandler(new MySimpleUrlAuthenticationSuccessHandler())
.usernameParameter("nickname").passwordParameter("password")
.failureForwardUrl("/login?error").and().logout().logoutSuccessUrl("/login")
.and().exceptionHandling().accessDeniedPage("/403");
}
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers("/","/reg");
}
}
MvcWebApplicationInitializer :
public class MvcWebApplicationInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[]{WebConfig.class, SpringConfig.class, SecurityConfig.class};
}
@Override
protected Class<?>[] getServletConfigClasses() {
return null;
}
@Override
protected String[] getServletMappings() {
return new String[]{"/"};
}
}
SpringWebSecurityApplicationInitializer :
public class SpringWebSecurityApplicationInitializer extends AbstractSecurityWebApplicationInitializer {
public SpringWebSecurityApplicationInitializer() {
}
}
CustomUserDetails :
@Component
public class CustomUserDetails extends User implements UserDetails {
private UserDao loginDao;
public CustomUserDetails(final User user, UserDao _loginDao) {
super(user);
loginDao=_loginDao;
}
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
List<String> roles = loginDao.getUserRoles(getUsername());
List<GrantedAuthority> grantedAuthorityList = new ArrayList<GrantedAuthority>();
if(roles!=null){
for(String role : roles){
GrantedAuthority authority = new SimpleGrantedAuthority(role);
grantedAuthorityList.add(authority);
}
}
return grantedAuthorityList;
}
@Override
public String getUsername() {
return getNickname();
}
@Override
public boolean isAccountNonExpired() {
return true;
}
@Override
public boolean isAccountNonLocked() {
return true;
}
@Override
public boolean isCredentialsNonExpired() {
return true;
}
@Override
public boolean isEnabled() {
return true;
}
}
LoginService:
@Service
public class LoginService implements UserDetailsService {
@Autowired
UserDao loginDao;
public void setLoginDao(UserDao loginDao) {
this.loginDao = loginDao;
}
@Override
public CustomUserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
web.entity.User userInfo = loginDao.findByUsername(username);
if(userInfo==null){
throw new UsernameNotFoundException("user name not found");
}
List<String> roles = loginDao.getUserRoles(username);
List<GrantedAuthority> grantedAuthorityList = new ArrayList<GrantedAuthority>();
if(roles!=null){
for(String role : roles){
GrantedAuthority authority = new SimpleGrantedAuthority(role);
grantedAuthorityList.add(authority);
}
}
CustomUserDetails customUserDetails=new CustomUserDetails(userInfo,loginDao);
return customUserDetails;
}
}
Прилагаю весь проект по ссылке: https://bitbucket.org/denisbaic10000/java_web/downloads/
В java 8 я использовал javah из папочки ${JAVA_HOME}/bin, а буквально недавно я обновился до Java 11 и там нет javahВ то же время я не могу использовать javah из Java 8 из-за...
Возможно ли в данном случае получить исходное 412?
Как вывести на экран каждую вторую букву любого слова?
Каким образом можно по тексту тегов, которые внутри тега отцовского, узнать какому именно отцу он пренадлежит и выдать все значение внутри...