簡體   English   中英

API Spring Boot自動重定向到登錄頁面

[英]API Spring boot auto redirect to login page

我正在嘗試將Spring Security與Spring Boot Restful API集成在一起。 我項目的代碼如下:

網絡安全配置為

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Autowired
    private BCryptPasswordEncoder bCryptPasswordEncoder;

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

        http.csrf().ignoringAntMatchers("/API/**");
        http.authorizeRequests()
        .antMatchers("/API/user/**").permitAll()
        .and().exceptionHandling().accessDeniedPage("/access-denied");

    }
}

UserController的:

@RestController
@RequestMapping("/API/user")
public class UserRestApiController {

    @Autowired
    UserService userService;

    @RequestMapping(value="/all", method=RequestMethod.GET)
    public ResponseEntity<Collection<Users>> getAll(){
        return new ResponseEntity<Collection<Users>>(userService.getAlluser(), HttpStatus.OK);
    }

    @RequestMapping(value="/{id}", method=RequestMethod.GET)
    public ResponseEntity<Users> getUser(@PathVariable(value="id") int id){
        return new ResponseEntity<Users>(userService.getUser(id), HttpStatus.OK);
    }

    @RequestMapping(value="/delete/{id}", method=RequestMethod.PUT)
    public String deleteUser(@PathVariable(value="id")int id){
        userService.deleteUser(id);
        return "DELETED";
    }

    @RequestMapping(value="/create", method=RequestMethod.POST)
    public ResponseEntity<String> addUser(@Valid @RequestBody Users user){
        return new ResponseEntity<String>(userService.addUser(user), HttpStatus.OK);
    }

    @RequestMapping(value="/update", method=RequestMethod.PUT)
    public ResponseEntity<Object> updateUser(@Valid @RequestBody Users user){
        return new ResponseEntity<Object>(userService.updateUser(user), HttpStatus.OK);
    }
}

UserService:

public class UserService {

    @Autowired
    private UserRepository userRepository;

    @Autowired
    private PasswordEncoder passwordEncoder;

    public Collection<Users> getAlluser() {
        return userRepository.findAll();
    }

    public Users getUser(int id) {
        return userRepository.getOne(id);
    }

    public void deleteUser(int id) {
        userRepository.deleteById(id);
    }

    public Users updateUser(Users user) {
        //Users u = userRepository.getOne(user.getId());
        Users userUpdate = null;
        if(userRepository.findById(user.getId()) != null) {
             userUpdate = userRepository.save(user);
        }
        return userUpdate;
    }

    public String addUser(Users user) {
        Users tmpUser = userRepository.findByUsername(user.getUsername());
        if(tmpUser == null) {
            userRepository.save(user);
            return "CREATED";
        } else {
            return "EXISTED";
        }
    }
}

我正在嘗試構建Restful API。 當我嘗試訪問鏈接時: http:// localhost:8080 / API / user / all

而是返回json值,它重定向到登錄頁面(我不配置執行此操作)。

圖片登錄頁面: 登錄頁面

你能幫我解決這個案子嗎?

與Spring MVC不同,REST服務不應將用戶重定向到登錄頁面,因為它是一種資源,而不是視圖解析器。 而是,調用者(例如Web瀏覽器)在收到HTTP代碼401時將用戶重定向到登錄頁面。

換句話說,如果您想繞過該表單而不刪除spring-security依賴項。 您可以提供用戶名/密碼,如下所示:

a)用戶名是用戶

b)密碼是您可以在控制台上獲取的哈希字符串。 例如,它將位於“使用默認安全密碼:3322e14e-b18c-42f2-a399-e391bd9909c4”行中

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM