【问题标题】:How to set Authorization header in Rest API Basic Authentication如何在 Rest API 基本身份验证中设置授权标头
【发布时间】:2017-11-17 07:31:21
【问题描述】:

目前我在 Java 中使用 REST API。我的 RestAPI 在单独的 Maven 项目中,而 Web 应用程序在单独的 Maven 项目中。我已经在 RestAPI 中处理了基本身份验证。我想在响应头中设置授权,并且还需要在每个请求中从 HttpRequest 中获取它(这是最佳实践吗?)

登录应用程序后,登录用户名和密码将转发到 API,如果登录凭据有效,则需要在响应中设置授权标头。每次我想检查标题是否凭据有效。

我的问题是,

  1. Authorization Header如何设置,在哪里设置?
  2. 我想在每个响应中设置标题还是只设置一次?

我的 Web.xml(RestAPI)

<http realm="MY APP REALM">
    <csrf disabled="true" />
    <intercept-url pattern="/rest/**"
        access="hasAnyRole('ROLE_ADMIN','ROLE_USER')" />
    <http-basic entry-point-ref="basicAuthenticationEntryPoint" />

</http>
<beans:bean name="bcryptEncoder"
    class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder" />
<beans:bean name="ser"
    class="com.test.api.config.SampleUserDetailsService" />
<beans:bean name="userService" class="com.test.api.service.impl.UserServiceImpl" />

<beans:bean name="basicAuthenticationEntryPoint"
    class="com.test.api.config.MyAppBasicAuthenticationEntryPoint" />


<authentication-manager>
    <authentication-provider user-service-ref="ser">
        <password-encoder ref="bcryptEncoder" />
    </authentication-provider>
</authentication-manager>

REST API 控制器

@RestController
@RequestMapping("/rest")
public class RestServiceController {

@Autowired
IUserService userService;


@RequestMapping(value = "/user", method = RequestMethod.GET)
public ResponseEntity<List<Users>> listAllUsers() {
    List<Users> users = userService.findAllUsers();
    if (users.isEmpty()) {
        return new ResponseEntity<List<Users>>(HttpStatus.NO_CONTENT);// You many decide to return
                                                                        // HttpStatus.NOT_FOUND
    }
    return new ResponseEntity<List<Users>>(users, HttpStatus.OK);
}

}

帮我解决这个问题?

【问题讨论】:

    标签: java spring rest maven


    【解决方案1】:
    public class MyHandlerInterceptorAdapter extends HandlerInterceptorAdapter {
    
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
          response.setHeader("Authorization", "token");
    
           return true;
        }
    

    【讨论】:

      猜你喜欢
      • 2014-02-10
      • 2012-10-02
      • 2015-05-05
      • 2014-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多