Аутентификация Spring Boot для разных типов пользователей - PullRequest
0 голосов
/ 09 июля 2020

Я новичок в весенней загрузке. Я хочу создать систему управления школой, в которой учителя и ученики могут входить в систему. После входа на страницу я отправляю токен jwt. Я хочу знать, каким должен быть подход к аутентификации. Существуют api, к которым должен иметь строгий доступ преподаватель и студенты. Я видел WebSecurityConfigurerAdapter, но не уверен, кто будет обрабатывать два разных набора пользователей?

1 Ответ

0 голосов
/ 09 июля 2020

Для этого вам нужно использовать Spring Security. Прежде всего вам нужно создать две роли TEACHER и STUDENT. Затем, исходя из ваших требований, вы дадите доступ к методам контроллера внутри функции configure. Функция configure должна находиться внутри SecurityConfig. java. А также аннотация @EnableWebSecurity должна быть поверх класса. Если вы читаете имя пользователя и пароль из базы данных, то внутри функции configAuthentication вы проверите.

Например

@Override
    protected void configure(HttpSecurity http) throws Exception{

        http.authorizeRequests()
        .antMatchers("/resources/**").permitAll()
        .antMatchers("/").hasAnyRole("STUDENT","TEACHER")
        .antMatchers("/add_friends").hasAnyRole( "TEACHER")
        .antMatchers("/showAllData").hasAnyRole( "TEACHER")
        .antMatchers("/show_users").hasAnyRole( "TEACHER")
        .and().formLogin()
        .loginPage("/login")
        .usernameParameter("username")
        .passwordParameter("password")
        .successForwardUrl("/welcome_page")
        .permitAll()
        .and()
        .logout()
        .permitAll()
        .and()
        .exceptionHandling().accessDeniedPage("/accessDenied");
        http.csrf().disable();
    }

@Autowired
    public void configAuthentication(AuthenticationManagerBuilder auth) throws Exception{
        auth.jdbcAuthentication().dataSource(dataSource)
                .usersByUsernameQuery("select username,password, enabled from core_users where username=?")
                .authoritiesByUsernameQuery("select username, authority from core_authorities where username=?");
    }
...