Учетная запись пользователя заблокирована при входе - PullRequest
0 голосов
/ 22 марта 2019

Я начинаю изучать Spring Security сейчас, и у меня возникли проблемы. Я написал классы конфигурации, получил данные из БД и так далее, но на своей веб-странице я вижу сообщение «Учетная запись пользователя заблокирована» и параметр ошибки в URL после входа в систему.

Locked image

MessengerApplication.java

@SpringBootApplication
public class MessengerApplication {

    public static void main(String[] args) {
        SpringApplication.run(MessengerApplication.class, args);
    }

}

MainPageController.java

@RestController
public class MainPageController {

    @RequestMapping("/")
    public ModelAndView greeting() {
        Map<String, Object> model = new HashMap<>();

        model.put("data", "world");

        return new ModelAndView("main_page", model);
    }

}

SecurityConfig.java

@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Autowired
    private UserServiceImpl userService;

    @Override
    protected void configure(AuthenticationManagerBuilder auth)
            throws Exception {
        auth.authenticationProvider(authenticationProvider());
    }

    @Bean
    public DaoAuthenticationProvider authenticationProvider() {
        DaoAuthenticationProvider authProvider
                = new DaoAuthenticationProvider();
        authProvider.setUserDetailsService(userService);
        authProvider.setPasswordEncoder(encoder());
        return authProvider;
    }

    @Bean
    public PasswordEncoder encoder() {
        return new BCryptPasswordEncoder();
    }
}

UserServiceImpl.java

@Service
public class UserServiceImpl implements UserDetailsService {

    @Autowired
    UserRepository userRepository;

    @Override
    public MyUserDetails loadUserByUsername(String s) throws UsernameNotFoundException {
        User user = userRepository.findUserByName(s);
        if (user == null)
            throw new UsernameNotFoundException(s);
        return new MyUserDetails(user);
    }
}

UserRepositoryImpl.java

@Repository
public class UserRepositoryImpl implements UserRepository {

    @Autowired
    JdbcTemplate template;

    @Override
    public User findUserByName(String name) {

        return template.queryForObject("select * from users where name = ?", rowMapper, name);
    }

    private RowMapper<User> rowMapper = new RowMapper<User>() {
        @Override
        public User mapRow(ResultSet resultSet, int i) throws SQLException {
            User user = new User();
            user.setPassword(resultSet.getString("password"));
            user.setName(resultSet.getString("name"));
            user.setId(resultSet.getLong("id"));
            return user;
        }
    };
}

UserRepository.java

public interface UserRepository  {

    User findUserByName(String name);
}

User.java

@Entity
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @Column(nullable = false, unique = true)
    private String name;

    private String password;

// get(), set()
}

MyUserDetails.java

public class MyUserDetails implements UserDetails {

    private User user;

    public MyUserDetails(User user) {
        this.user = user;
    }
// ...
}

1 Ответ

1 голос
/ 22 марта 2019

Метод isAccountNonLocked, акцент на не . Вы должны вернуть true из этого метода, чтобы иметь «разблокированную» учетную запись. То же самое относится и к методу «истек» и т. Д. В этом случае true означает «разрешить», false означает «отклонить».

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