【问题标题】:How do I access the Principal in a Message Driven Bean?如何访问消息驱动 Bean 中的主体?
【发布时间】:2012-11-23 16:01:14
【问题描述】:

在 MDB 的 onMessage 方法中,如何检索发起请求的 JAAS 用户主体的名称?我的应用程序正在使用 Servlet 登录和 jdbcRealm。

我曾考虑将其添加为消息属性,但我宁愿确保它由 JAAS 处理。

【问题讨论】:

    标签: jakarta-ee jms jaas message-driven-bean


    【解决方案1】:

    它是固有处理的,你所要做的就是注入和使用MessageDrivenContext

    ..
    @Resource
    private MessageDrivenContext mdc;
    
    public void onMessage(Message message) {
        Principal principal = mdc.getCallerPrincipal();
        System.out.println(principal.getName());
        //ALTERNATIVELY, YOU CAN USE A METHOD mdc.isCallerInRole("<role name>");
    }
    

    【讨论】:

    • 不客气!关于文档,你可以在 Oracle 官方文档中找到 MDB 的介绍和示例,但我同意,肯定可以更详细。
    猜你喜欢
    • 2012-11-01
    • 2013-06-22
    • 1970-01-01
    • 2013-05-16
    • 2018-10-19
    • 1970-01-01
    • 1970-01-01
    • 2021-09-24
    • 1970-01-01
    相关资源
    最近更新 更多