回答

收藏

Springboot+Swagger+Oauth2 密码模式登录后,请求中无token

Java技术问答 Java技术问答 78 人阅读 | 0 人回复 | 2022-01-06

Springboot+Swagger+Oauth2 密码模式登录可以正常进入,但是请求接口的时候Header中没有token存在,接口返回401未授权。请问我应该怎么修改Swagger配置, _: f: z8 s! i5 j5 W2 k# L
以下是我的Swagger配置类
' q0 x, Q' l+ c' J" Q
  1. @Bean ) }3 ^  U1 V2 s9 H8 b3 z, {
  2.     public Docket api() {
  3.         return new Docket(DocumentationType.SWAGGER_2)
  4.                 .enable(swaggerEnabled) ' w8 b, S& x5 t4 b
  5.                 .select()
  6.                 .apis(RequestHandlerSelectors.basePackage("com.polly.robot.web"))
  7.                 .paths(PathSelectors.any())
  8.                 .build() ( ^' c3 S4 n2 N9 _
  9.                 .apiInfo(apiInfo()) * K. }$ n' D! w
  10.                 .securitySchemes(Collections.singletonList(securitySchemes())) ! `5 a0 e3 O1 \* x  H+ y4 o; I% `2 M5 I
  11.                 .securityContexts(Collections.singletonList(securityContexts()));
  12.     }
  13. 4 h# q+ t+ k! U  ~& @- U
  14.     /** . d/ C3 T% m$ n) O: |! U# v0 Z! F, T6 ^
  15.      * 这个方法主要是写一些文档的描述 ! R4 K8 p" T+ |; X& B
  16.      */ 7 R$ `. @- T2 ?5 d. V
  17.     private ApiInfo apiInfo() {
  18.         return new ApiInfo( , S; D) y' f; L" _
  19.                 title, 3 H% K& |. e' F; [. ?
  20.                 "",
  21.                 "1.0.0", 2 |7 m; G, S7 U+ C
  22.                 "", 4 C# g, X  X3 N( B4 H5 z& h
  23.                 new Contact("", contactUrl, email), ( I9 Y  T- E& U( w+ Z% N7 d% t6 j; `
  24.                 "", "", Collections.emptyList());
  25.     }
  26.   C8 _+ Q' ?, r7 V9 s: g% E7 H6 Y, G8 k
  27.     /** * {5 k- Z3 o  G5 A1 r
  28.      * 认证方式使用密码模式
  29.      */ 0 Y9 ^7 {8 ]& d" ?. D
  30.     private SecurityScheme securitySchemes() {
  31.         GrantType grantType = new ResourceOwnerPasswordCredentialsGrant(authServer); 8 @- D4 ?4 g5 _
  32. - N8 t. \' m& p" B
  33.         return new OAuthBuilder()
  34.                 .name("assess_token") 8 {: }$ A! p8 k. o( e
  35.                 .grantTypes(Collections.singletonList(grantType)) . r/ u5 a3 [# P; x0 P6 N
  36.                 .scopes(Arrays.asList(scopes())) , s# ?: X# s$ U# h: y
  37.                 .build();
  38.     } + F" i% L6 w0 [/ `( c) z) a/ v
  39.     /**
  40.      * 设置 swagger2 认证的安全上下文
  41.      */ 5 _) u& x; \# s9 f1 a. `
  42.     private SecurityContext securityContexts() {
  43.         return SecurityContext.builder() 3 W1 Z9 h0 }& j1 u, O
  44.                 .securityReferences(Collections.singletonList(new SecurityReference("assess_token", scopes())))
  45.                 .forPaths(PathSelectors.any())
  46.                 .build(); , I2 c: Z& g. t2 G4 P2 r' [
  47.     } , S$ h" m' A& v& |
  48. $ d+ y  k& E9 [+ i
  49.     /** 0 B/ M5 @5 M) H) ?4 |( m
  50.      * 允许认证的scope
  51.      */
  52.     private AuthorizationScope[] scopes() {
  53.         AuthorizationScope authorizationScope = new AuthorizationScope("server", "接口测试");
  54.         AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
  55.         authorizationScopes[0] = authorizationScope; ; n" ^! z4 e' a( M( J
  56.         return authorizationScopes;
  57.     }
复制代码
Swagger引用:
) W6 F. i/ O( B) [/ O. M4 k; u
  1. <dependency>
  2.     <groupId>io.springfox</groupId> 8 O% x( {8 C- [; ?+ o
  3.     <artifactId>springfox-swagger2</artifactId>
  4.     <version>2.9.2</version>
  5. </dependency>
  6. <dependency> - a4 ]2 \! |. o+ R  E2 t
  7.     <groupId>io.springfox</groupId>
  8.     <artifactId>springfox-swagger-ui</artifactId>   W9 r6 [: E, D6 L2 w- Y+ Z! A
  9.     <version>2.9.2</version> 8 w2 q. g+ t1 x4 C
  10. </dependency>
复制代码

' d9 t# z1 x# }" h, K1 h) c
0 |% [/ I0 q: t1 b
: d! I9 L* ?$ e" S1 @2 }0 q& q" G  l0 O

) q& h; `5 \9 L4 ^5 S
我知道答案 回答被采纳将会获得5 金钱 已有0人回答
分享到:
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则