小编Eri*_*ein的帖子

60
推荐指数
6
解决办法
5724
查看次数

Jersey ContainerRequestFilter中的读取请求属性

我有一个受SSO实施的Shibboleth保护的Jersey API.Shibboleth将登录用户的id放入请求属性中.在后端,我正在使用Shiro进行授权.Shiro想知道登录用户,因此它可以加载权限.

将userId从请求属性中移出并进入Shiro的正确方法是什么?现在,我正在尝试的是:

@Provider
public final class ShiroLoginFilter implements ContainerRequestFilter {

    @Context
    private HttpServletRequest request;

    @Override
    public void filter(final ContainerRequestContext requestContext)
        throws IOException {

        final String userId = (String) this.request.getAttribute("nameid");
        final Subject subject = SecurityUtils.getSubject();
        subject.login(new LocusAuthenticationToken(userId));

    }
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,由于JERSEY-1960,我无法将请求上下文注入过滤器.每个用户都需要"登录"才能加载权限.我宁愿不必在API的每个方法中重复登录代码.我也不允许使用web.xml过滤器(由我的老板).我有什么好的选择吗?

jersey

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

显示没有表格的图表

我正在尝试使用DynamicJasper生成一个Jasper报告,它只是一个图表,上面没有表格.似乎没有隐藏列或抑制表的方法.我只选择生成图表有哪些选择?我会接受一个不使用DynamicJasper的解决方案,只使用JasperReports java API.

public void go() throws ColumnBuilderException, ClassNotFoundException, JRException {
    super();

    final AbstractColumn areas = ColumnBuilder.getNew()
            .setColumnProperty("area", String.class.getName())
            .setTitle("Area")
            .setWidth(30)
            .build();

    final AbstractColumn exercises = ColumnBuilder.getNew()
            .setColumnProperty("exercises", Integer.class.getName())
            .setTitle("Exercises")
            .setWidth(30)
            .build();

    final DynamicReportBuilder reportBuilder = new DynamicReportBuilder();
    reportBuilder.addColumn(areas);
    reportBuilder.addColumn(exercises);
    reportBuilder.setUseFullPageWidth(true);

    final GroupBuilder groupBuilder = new GroupBuilder();
    groupBuilder.setCriteriaColumn((PropertyColumn) areas);
    groupBuilder.setGroupLayout(GroupLayout.EMPTY);
    final DJGroup group = groupBuilder.build();

    reportBuilder.addGroup(group);
    reportBuilder.addChart(this.chart((PropertyColumn) areas, exercises));

    final DynamicReport dynamicReport = reportBuilder.build();
    final JasperPrint jasperPrint =
            DynamicJasperHelper.generateJasperPrint(
                    dynamicReport,
                    new ClassicLayoutManager(),
                    new JRBeanCollectionDataSource(this.getData()));

    /* PDF */
    final JRPdfExporter exporter …
Run Code Online (Sandbox Code Playgroud)

jasper-reports dynamic-jasper

5
推荐指数
1
解决办法
667
查看次数