Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaEE登录文本_Java_Jakarta Ee_Login_Jboss_Wildfly - Fatal编程技术网

JavaEE登录文本

JavaEE登录文本,java,jakarta-ee,login,jboss,wildfly,Java,Jakarta Ee,Login,Jboss,Wildfly,我正在尝试像Servlet请求提供的那样在EJB中进行手动登录 到目前为止还不错。我实现了CallbackHandler: public class PasswordCallbackHandler implements CallbackHandler { private String username; private char[] password; public PasswordCallbackHandler(String username, char[] pass

我正在尝试像Servlet请求提供的那样在EJB中进行手动登录

到目前为止还不错。我实现了CallbackHandler:

public class PasswordCallbackHandler implements CallbackHandler {
    private String username;
    private char[] password;

    public PasswordCallbackHandler(String username, char[] password) {
        super();
        this.username = username;
        this.password = password;
    }

    public void handle(Callback[] callbacks) throws IOException,
            UnsupportedCallbackException {
        if(callbacks == null) {
            return;
        }

        for (int i = 0; i < callbacks.length; i++) {
            if (callbacks[i] instanceof NameCallback) {
                NameCallback nc = (NameCallback) callbacks[i];
                nc.setName(username);
            } else if (callbacks[i] instanceof PasswordCallback) {
                PasswordCallback pc = (PasswordCallback) callbacks[i];
                pc.setPassword(password);
            } else {
                throw new UnsupportedCallbackException(callbacks[i],
                        "Unrecognized Callback");
            }
        }
    }
}
主题显示:

Subject:
    Principal: user
    Principal: Roles(members:ADMIN,USER)
    Principal: CallerPrincipal(members:user)
所以登录本身就起作用了。我现在的问题是我用它做什么?当我从容器中获取当前主体时,仍然会收到匿名消息。在JBoss7.1和Wildfly上测试

    @Resource
    private SessionContext ctx;

Principal callerPrincipal = ctx.getCallerPrincipal();
if(callerPrincipal == null) {
    return null;
}

String playerName = callerPrincipal.getName(); // Also after login() it returns anonymous.
那么我是否误解了这个功能?我需要这个主题做什么?如果容器接受我的新用户凭据,我将如何登录

当我在过滤器中使用Servlet API中的login()时,它可以工作

您好,
主题将是关键。我忽略了doAs()。

你能详细说明解决方案吗?我引用@rodrigoap,你能详细说明一下吗?
    @Resource
    private SessionContext ctx;

Principal callerPrincipal = ctx.getCallerPrincipal();
if(callerPrincipal == null) {
    return null;
}

String playerName = callerPrincipal.getName(); // Also after login() it returns anonymous.