HttpBasi c () безопасности пружины не работает должным образом, когда я пытаюсь выйти из angualr UI - PullRequest
0 голосов
/ 25 марта 2020

Я хочу получить доступ к / registration / createUser URL без каких-либо ограничений или до входа в систему. Однако после добавления httpBasi c () в настройках безопасности он выдает код ошибки 401. но если я использую formlogin () вместо httpBasi c (), то он работает как положено. но функциональность входа не работает.

для нижеуказанного кода функция входа в систему работает, но функция allowall () не работает

    SecurityConfiguration.java
        @Override
            protected void configure(HttpSecurity http) throws Exception {
                  http.csrf().disable();
                  http.cors();
                   http.httpBasic()
                        .and().authorizeRequests()       
                        .antMatchers("/registration/createUser").permitAll() 
                        .antMatchers("/rpa/api/v1/**").authenticated()
                        .antMatchers("/admin/**").hasRole("ADMIN")
                        .anyRequest().authenticated()
                      ;

для кода ниже функция allowall () работает, но функция входа в систему не работает

    SecurityConfiguration.java
        @Override
            protected void configure(HttpSecurity http) throws Exception {
                  http.csrf().disable();
                  http.cors();
                http.authorizeRequests()
                        .antMatchers("/registration/createUser").permitAll()
                        .antMatchers("/rpa/api/v1/**").authenticated()
                        .antMatchers("/admin/**").hasRole("ADMIN")
                        .and().formLogin()
                        .permitAll();

            }

RegistrationController. java

@CrossOrigin(origins = "*")
@RestController
@RequestMapping("/registration")
public class RegistrationController {
    @Autowired
    private UserRepository userRepository;
    @Autowired()
    PasswordEncoder bCryptPasswordEncoder;
    @RequestMapping(value = "/createUser",method = RequestMethod.POST)
  @ResponseBody
    public String createNewRegistration(@RequestBody USerDto uSerDto) throws Exception {
        Optional<User> existingUser=userRepository.findByUserName(uSerDto.getUserName());
        if(existingUser.isPresent()){
            throw new Exception();
        }else{
            String plainText=uSerDto.getPassword();
            String encrypt= bCryptPasswordEncoder.encode(plainText);
            User user = new User();
            user.setUserName(uSerDto.getUserName());
            user.setEmail(uSerDto.getEmail());
            user.setPassword(encrypt);
            user.setPlainTextPSW(plainText);
            HashSet hashSet= new HashSet();
            Role role= new Role();
            role.setRole(uSerDto.getRole());
            role.setDescription(uSerDto.getPassword());
            hashSet.add(role);
            user.setRoles(hashSet);
            userRepository.save(user);
           return "USer Added successfully";
        }

    }

loginController. java

@CrossOrigin(origins = "*")
@RestController
@RequestMapping("/")
public class loginController {

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

loginservice.ts

 login(username:string,password:string){
    const headers = new HttpHeaders({ Authorization: 'Basic ' + btoa(username + ':' + password) });
    return this.httpClient.get("http://localhost:8888/login",{headers,responseType: 'text' as 'json'})
  }

registration.ts

      saveUser(userName,email,password, role) {
   const headers = new HttpHeaders({ Authorization: 'Basic ' +
       btoa(userName + ':' + password +email + ':' + role) });
    return this.http.post<any>('http://localhost:8888/registration/createUser',
      {
        userName:userName,
        password:password,
        email:email,
        role:role,
      },{headers}). pipe( share(),
      catchError(this.errorHandle));

ниже текста находится запрос на / createuser . Это allowAll (), но оно выдает 401, даже если нет аутентификации.

Request URL: http://localhost:8888/registration/createUser
Request Method: POST
Status Code: 401 
Remote Address: [::1]:8888
Referrer Policy: no-referrer-when-downgrade
Access-Control-Allow-Origin: *
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Content-Type: application/json;charset=UTF-8
Date: Thu, 26 Mar 2020 05:53:13 GMT
Expires: 0
Pragma: no-cache
Transfer-Encoding: chunked
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
WWW-Authenticate: Basic realm="Realm"
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
X-XSS-Protection: 1; mode=block
Accept: application/json, text/plain, */*
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Authorization: Basic cm46YXdlcnJ1YXNlQGdtYWlsLmNvbTp1c2Vy
Connection: keep-alive
Content-Length: 75
Content-Type: application/json
Host: localhost:8888
Origin: http://localhost:4200
Referer: http://localhost:4200/login
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-site
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36
{userName: "rn", password: "awer", email: "ruase@gmail.com", role: "user"}
userName: "rn"
password: "awer"
email: "ruase@gmail.com"
role: "user"

ответ

{"timestamp":"2020-03-26T05:53:13.578+0000","status":401,"error":"Unauthorized","message":"Unauthorized","path":"/registration/createUser"}

так как добиться того и другого, когда я пытаюсь получить доступ из моего angular пользовательского интерфейса.

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