当前位置: 首页 > 知识库问答 >
问题:

未经授权时发送自定义响应

邹野
2023-03-14

我在这里遵循 JWT 夸克指南。我想在不允许用户组访问 API 时发送自定义响应。

这是指南中显示的示例。

@GET()
@Path("roles-allowed") 
@RolesAllowed({"Echoer", "Subscriber"}) 
@Produces(MediaType.TEXT_PLAIN)
public String helloRolesAllowed(@Context SecurityContext ctx) {
    Principal caller =  ctx.getUserPrincipal();
    String name = caller == null ? "anonymous" : caller.getName();
    boolean hasJWT = jwt != null;
    String helloReply = String.format("hello + %s, isSecure: %s, authScheme: %s, hasJWT: %s", name, ctx.isSecure(), ctx.getAuthenticationScheme(), hasJWT);
    return helloReply;
}

我如何知道请求是否未经授权,以便我可以发送自定义响应。

共有1个答案

向修谨
2023-03-14

简答:现在做不到。(更新部分的解释)

看起来它是JEE应用程序,所以也许这是你的答案
或试试这个。或添加提供程序:

@Provider
public class CustomReasonNotAuthorizedException implements ExceptionMapper<NotAuthorizedException> {

    public Response toResponse(NotAuthorizedException bex) {
        return Response.status(Response.Status.UNAUTHORIZED)
                .entity("your text")
                .build();
    }

}

更新

我检查了源代码并在调试中尝试了它,看起来执行通过此代码如下。所以您不能更改消息“未授权”。

            HttpAuthenticator authenticator = identity.getAttribute(HttpAuthenticator.class.getName());
            RoutingContext context = ResteasyContext.getContextData(RoutingContext.class);
            if (authenticator != null && context != null) {
                authenticator.sendChallenge(context, null);
            } else {
                respond(requestContext, 401, "Not authorized");
            }
 类似资料:
  • 我已经为此挠头两天了。我使用WebAPI版本2.2和我使用CORS。这个设置工作在服务器端,我被允许从我的web客户端服务器代码获得授权的内容,但在我的ajax调用中获得未经授权的内容。 以下是我的配置: Web API配置 WebApiConfig: Startup.Auth.cs: (我已经尝试了app.UseCors(CorsOptions.AllowAll)和config.EnableCo

  • 我们使用Spring Security OAuth2保护我们的REST服务(用于服务器到服务器通信,不涉及用户)。但是,当您尝试访问浏览器中的受保护资源时,它将显示: 我们希望这是我们自己选择的自定义页面。有办法吗? 设置“拒绝访问”页面不起作用。首先,它需要定义一个登录页面,我们没有,因为这是一个纯服务器到服务器的通信。另一个原因是,这个属性自Spring 3.0..或类似的版本以来就被弃用了。

  • 功能说明 目睹直播提供了一系列的授权观看方式,如密码验证,付费观看等,然而由于客户业务的多样性,实现如:接入客户自身账户体系,登陆OA系统后再跳转到目睹观看直播等一系列更高级的授权观看方式,此时就需要使用自定义授权。 自定义授权逻辑图 功能设置 首先,需在 某个频道 - 频道管理 - 授权观看 - 授权类型 中点击自定义授权,并输入您希望在观众进入观看页时跳转的链接,如: http://your-

  • Web 第三方应用开发-服务授权 服务授权 操作介绍 服务类型 Web 第三方应用开发-服务授权 更新时间:2018-07-03 22:04:34 本章讲解:如何关联服务和插件资源。 服务授权 进入应用开发后,点击右上角“服务授权”按钮,可以开通应用开发所需要依赖的服务: 有几个官方服务是默认开通的,不需要手动开通: 操作介绍 开通:开通服务 详情:查看服务详情 配置:配置服务 服务类型 官方服务

  • 问题内容: 我从Nexus存储库中检出了代码。我更改了帐户密码,并在文件中正确设置了密码。在执行时,我收到错误消息,说明它尝试从该存储库下载文件。 任何想法如何解决此错误?我在Maven 3.04中使用Windows 7 问题答案: 这里的问题是所使用的密码出现错字错误,由于密码中使用了字符/字母,因此很难识别。

  • 我试图将Dropwizard用作一个完整的网络服务器,通过REST应用编程接口将服务的公共页面、受保护的页面和数据结合起来。因此,我正在通过应用基于计算令牌和领域的自定义授权方案来管理不同的安全区域来验证保护某些路由的能力。 我很难理解如何达到目的。我期望的顺序如下: 显示带有用户表单的 HTML 登录页 用户输入其凭据 调用身份验证路由以验证凭据并为用户创建令牌。发回一个带有授权标头的欢迎页面,