有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java RESTful API身份验证和进一步请求

我用java编写了一个RESTful API,客户机必须在其中创建一个帐户(POST to/user),然后登录(POST to/login)

现在,我正在使用AngularJS为web浏览器创建一个前端。问题是,当我创建一个用户,尝试登录并输入一些登录安全的url时,我得到

401未经授权

似乎每个请求都应该单独进行身份验证,对吗

我做的步骤:

  1. POST to/user创建用户
  2. POST to/login哪个用户登录
  3. 进入/account/1/something,这是我的REST服务中的登录安全路径,它返回401

当我编写REST服务时,我在IntelliJ IDEA的RESTful WebService测试客户机下测试所有内容,现在仍然可以

解决这个问题的方法是什么

@Neo 这里有重新验证SuccessHandler

@Component("successHandler")
public class RestAuthenticationSuccessHandler extends SimpleUrlAuthenticationSuccessHandler {
    private RequestCache requestCache = new HttpSessionRequestCache();

    @Override
    public void onAuthenticationSuccess(final HttpServletRequest request, final HttpServletResponse response, final Authentication authentication)
            throws ServletException, IOException {
        final SavedRequest savedRequest = requestCache.getRequest(request, response);

        if (savedRequest == null) {
            clearAuthenticationAttributes(request);
            return;
        }
        final String targetUrlParameter = getTargetUrlParameter();
        if (isAlwaysUseDefaultTargetUrl() || (targetUrlParameter != null && StringUtils.hasText(request.getParameter(targetUrlParameter)))) {
            requestCache.removeRequest(request, response);
            clearAuthenticationAttributes(request);
            return;
        }

        clearAuthenticationAttributes(request);
    }

    public void setRequestCache(final RequestCache requestCache) {
        this.requestCache = requestCache;
    }
}

我还有另外一个类,但如果我全部添加,帖子会变得太冗长,所以如果你(建议一个类名)需要以下任何代码,请告诉我: config classes list


共 (0) 个答案