小编D00*_*0de的帖子

JAX-RS 2打印JSON请求

我希望能够从请求中打印JAX-RS 2 JSON有效负载,无论我的应用服务器上的实际实现如何.

我在SO上尝试了建议的解决方案,但都包含了实际实现的二进制文件(比如Jersey和类似的),我只允许在我的应用程序中使用javaee-api v 7.0.

我已尝试在我的客户端上实现ClientRequestFilter和ClientResponseFilter,但它们不包含序列化实体.

这是客户的一个例子:

WebTarget target = ClientBuilder.newClient().register(MyLoggingFilter.class).target("http://localhost:8080/loggingtest/resources/accounts");
Account acc = target.request().accept(MediaType.APPLICATION_JSON).get(account.Account.class);
Run Code Online (Sandbox Code Playgroud)

这是MyLoggingFilter的实现:

@Provider
public class MyLoggingFilter implements ClientRequestFilter, ClientResponseFilter {

    private static final Logger LOGGER = Logger.getLogger(MyLoggingFilter.class.getName());

    @Override
    public void filter(ClientRequestContext requestContext) throws IOException {

        LOGGER.log(Level.SEVERE, "Request method: {0}", requestContext.getMethod());

    }

    @Override
    public void filter(ClientRequestContext requestContext, ClientResponseContext responseContext) throws IOException {
        LOGGER.log(Level.SEVERE, "Response status: {0}", responseContext.getStatus());
    }        
}
Run Code Online (Sandbox Code Playgroud)

java logging json jax-rs java-ee

12
推荐指数
1
解决办法
1万
查看次数

自定义JAX-RS授权 - 在每个请求中使用JWT

我有一个JAX-RS服务,我希望所有用户都能访问我的服务,但只有那些有权查看结果的用户.基于角色的安全性和现有的REALMS和身份验证方法不符合我的要求.

例如:

  1. 用户对一个REST服务进行身份验证,并向他发送带有其ID的JWT令牌
  2. 用户请求其他资源,并在每个请求中向他的JWT发送他的ID
  3. 我检查他的用户ID(来自JWT),如果业务逻辑返回结果我发回去,否则我发送空结果集或特定HTTP状态

问题是:我应该在哪里检查用户ID,在某个单独的过滤器,安全上下文或每个REST方法实现中?如何使用此ID提供REST方法,在按ID过滤请求后,是否可以在每个方法中注入securityContext?

我正在使用GlassFish 4.1和Jersey JAX-RS实现.

java security rest glassfish jax-rs

10
推荐指数
1
解决办法
1万
查看次数

AngularJS路由到静态文件

我有一个简单的angularjs应用程序,使用ngRoute模块在html5Mode中进行路由.如何在我的页面上有一些静态文件的链接,而不是通过angular routing mdule拦截它?

这是一个例子:

HTML:

    <head>
        <base href='/'></base>
    </head>
    <body ng-app="crudApp">

    <a href="/">Home</a>
    <a href="/user">User</a>
    <a href="/users.html">users.html</a>

    <div ng-view></div>
Run Code Online (Sandbox Code Playgroud)

JS路由:

$routeProvider
            .when('/', {
                templateUrl: 'app/components/home/homeView.html',
                controller: 'HomeController'

            })
            .when('/user', {
                templateUrl: 'app/components/user/userView.html',
                controller: 'UserController'

            })
            .otherwise({
                redirectTo: '/'
            });
Run Code Online (Sandbox Code Playgroud)

当我点击用户链接时,我会被路由到localhost:8080/user,我的控制器和模板工作正常.当我点击users.html链接时,我会被路由到家,但我想调用一个静态的home.html页面.

html javascript angularjs ngroute

6
推荐指数
1
解决办法
9183
查看次数

标签 统计

java ×2

jax-rs ×2

angularjs ×1

glassfish ×1

html ×1

java-ee ×1

javascript ×1

json ×1

logging ×1

ngroute ×1

rest ×1

security ×1