小编rev*_*ilo的帖子

SpringSecurity WithSecurityContext MockMvc OAuth2总是未经授权

我已按照以下链接尝试测试OAuth2 @PreAuthorise(hasAnyRole('ADMIN','TEST'),但我无法通过任何测试或甚至验证.

当我尝试使用admin(或任何角色)访问终点时,它将永远不会正确进行身份验证.我错过了一些明显的东西,似乎我拥有的东西就像在例子中一样.我还尝试了具有OAuth特定身份验证的WithSecurityContext Factory的另一种替代方案,但仍然没有运气.任何帮助,将不胜感激.

/sf/answers/2217575461/http://docs.spring.io/spring-security/site/docs/4.0.x/reference/htmlsingle/#test

我的控制器我正在测试

@RestController
@RequestMapping("/bookmark/")
public class GroupBookmarkController {

    @Autowired
    BookmarkService bookmarkService;

    /**
    * Get list of all bookmarks
    */
    @RequestMapping(value = "{groupId}", method = RequestMethod.GET)
    @PreAuthorize("hasAnyRole(['ADMIN', 'USER'])")
    public ResponseEntity<List<Bookmark>> listAllGroupBookmarks(@PathVariable("groupId") String groupId) throws BookmarkNotFoundException {
        List<Bookmark> bookmarks = bookmarkService.findAllBookmarksByGroupId(groupId);
        return new ResponseEntity<>(bookmarks, HttpStatus.OK);
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

我的测试课

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = BookmarkServiceApplication.class)
@WebAppConfiguration
public class BookmarkServiceApplicationTests {

    private MockMvc mockMvc;

    @Autowired
    private WebApplicationContext webApplicationContext;

    @Before
    public void loadData() {
        this.mockMvc = MockMvcBuilders
                .webAppContextSetup(webApplicationContext)
                .apply(springSecurity())
                .alwaysDo(print()) …
Run Code Online (Sandbox Code Playgroud)

spring-security spring-test spring-boot spring-security-oauth2 spring-oauth2

5
推荐指数
1
解决办法
2739
查看次数