Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
 Сервер получил запрос, но отказался его авторизовать  [new]
fallen2019
Member

Откуда:
Сообщений: 193
В моем проекте есть список студентов и туда может добавлять, удалять, редактировать студентов только админ. Когда я захожу в роли Админа на сайт, он спокойно удаляет их, но когда хочу добавить или отредактировать он выдает ошибку "сервер получил запрос, но отказался его авторизовать"

Security Config
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    /*@Bean
    public UserDetailsService userDetailsService() {
        InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager();
        manager.createUser(User.withDefaultPasswordEncoder()
                .username("admin").password("1234").roles("ADMIN").build());
        return manager;
    }*/
    @Override
    protected void configure(final AuthenticationManagerBuilder auth) throws Exception {
        auth.inMemoryAuthentication()
                .withUser("admin").password(passwordEncoder().encode("1234")).roles("ADMIN")
                .and()
                .withUser("user").password(passwordEncoder().encode("user1234")).roles("USER");

    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
                .antMatchers("/allStudents**").permitAll()
                .antMatchers("/addStudent**").access("hasRole('ROLE_ADMIN')")
                .antMatchers("/editStudent/**").access("hasRole('ROLE_ADMIN')")
                .antMatchers("/deleteStudent/**").access("hasRole('ROLE_ADMIN')")
                .antMatchers("/index", "/user", "/").permitAll()
                .and()
                .formLogin()
                .loginPage("/login")
                .defaultSuccessUrl("/allStudents")
                .and()
                .logout()
                .logoutRequestMatcher(new AntPathRequestMatcher("/logout"));
    }

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

}

Authorization Controller
package adil.java.schoolmaven.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
public class AuthorizationController {


@RequestMapping(value="/", method=RequestMethod.GET)    
    public String index() {    

        return "allStudents";    
    }    

    @RequestMapping(value="/login", method=RequestMethod.GET)    
    public String login() {  
        return "login";    
    }    

}

Student Controller

@Controller
public class StudentController {

    @Autowired
    private ServletContext servletContext;

    // Constructor based Dependency Injection
    private StudentService studentService;

    public StudentController() {

    }

    @Autowired
    public StudentController(StudentService studentService) {
        this.studentService = studentService;
    }




    @RequestMapping(value = "/allStudents",  method = {RequestMethod.GET, RequestMethod.POST})

    public ModelAndView displayAllUser() {
        System.out.println("User Page Requested : All Students");
        ModelAndView mv = new ModelAndView();
        List<Student> studentList = studentService.getAllStudents();
        mv.addObject("studentList", studentList);
        mv.setViewName("allStudents");

        return mv;
    }



    @RequestMapping(value = "/addStudent", method = RequestMethod.GET)
    public ModelAndView displayNewUserForm() {
        ModelAndView mv = new ModelAndView("addStudent");
        mv.addObject("headerMessage", "Add Student Details");
        mv.addObject("student", new Student());
        return mv;
    }

    @PostMapping(value = "/addStudent")
    public String saveNewStudent(@RequestParam("name") @NonNull String name,
            @RequestParam("surname") @NonNull String surname,
            @RequestParam("avatar") MultipartFile file)
            throws IOException {

        Student student = new Student();
        student.setSurname(surname);
        student.setName(name);

        if (file != null && !file.isEmpty()) {
            student.setAvatar(studentService.saveAvatarImage(file).getName());
        }

        studentService.saveStudent(student);
        return "redirect:/allStudents";
    }

    @GetMapping(value = "/editStudent/{id}")
    public ModelAndView displayEditUserForm(@PathVariable Long id) {
        ModelAndView mv = new ModelAndView("editStudent");
        Student student = studentService.getStudentById(id);
        mv.addObject("headerMessage", "Редактирование студента");
        mv.addObject("student", student);
        return mv;
    }

    @PostMapping(value = "/editStudent")
    public String saveEditedUser(
            @RequestParam("id") Long id,
            @RequestParam("name") String name,
            @RequestParam("surname") String surname,
            @RequestParam("avatar") MultipartFile file) {

        try {

            studentService.updateStudent(name, surname, file, studentService.getStudentById(id));

        } catch (FileSystemException ex) {
            ex.printStackTrace();
        } catch (IOException e) {
            return "redirect:/error";
        }

        return "redirect:/allStudents";
    }

    @GetMapping(value = "/deleteStudent/{id}")
    public ModelAndView deleteUserById(@PathVariable Long id) {
        studentService.deleteStudentById(id);
        ModelAndView mv = new ModelAndView("redirect:/allStudents");

        return mv;

    }

}
21 июн 19, 11:56    [21912814]     Ответить | Цитировать Сообщить модератору
 Re: Сервер получил запрос, но отказался его авторизовать  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 3921
fallen2019
он выдает ошибку "сервер получил запрос, но отказался его авторизовать"

Прям так и написал? Из какого класса ошибка выпала?
21 июн 19, 13:04    [21912887]     Ответить | Цитировать Сообщить модератору
 Re: Сервер получил запрос, но отказался его авторизовать  [new]
fallen2019
Member

Откуда:
Сообщений: 193
SQL2008,

Да вот такая ошибка

К сообщению приложен файл. Размер - 10Kb
21 июн 19, 13:07    [21912889]     Ответить | Цитировать Сообщить модератору
 Re: Сервер получил запрос, но отказался его авторизовать  [new]
fallen2019
Member

Откуда:
Сообщений: 193
SQL2008,

Вот студента он удаляет когда захожу через админа, а когда пытаюсь добавить или редактировать он выдает вот такую ошибку
21 июн 19, 13:13    [21912896]     Ответить | Цитировать Сообщить модератору
 Re: Сервер получил запрос, но отказался его авторизовать  [new]
fallen2019
Member

Откуда:
Сообщений: 193
fallen2019,

У меня получилось надо было добавить-
 http.csrf().disable().authorizeRequests()
21 июн 19, 14:00    [21912943]     Ответить | Цитировать Сообщить модератору
 Re: Сервер получил запрос, но отказался его авторизовать  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 3921
fallen2019
fallen2019,

У меня получилось надо было добавить-
 http.csrf().disable().authorizeRequests()

Вам неплохо было бы разобраться что это все значит, а не методом тыка тупо заставить работать.
То, что вы задизаблили CSRF (кстати знаете что это значит?) не есть хорошо.
21 июн 19, 15:22    [21913062]     Ответить | Цитировать Сообщить модератору
Все форумы / Java Ответить