3

j_security_check管理対象Beanで、LDAPサーバーに認証されるユーザー名をBeanプロパティとして取得したいと思います。

基本的に、ユーザー名を

<input type="text" name="j_username" />

送信され、すべてが認証されたら、次のように使用します。

@Override
public String getName() {
    return getId();
}

どのように使用しますか

FacesContext.getExternalContext().getUserPrincipal();

ユーザー名をBeanプロパティとして取得するには?

何が行われているのかを知る必要がある場合、これは完全なバッキングBeanです。以前は手動でユーザーにテキストボックスにユーザー名を入力させていましたが、これを停止して自動的にユーザー名をプルさせたいと思います。

//@Named("user")
@SessionScoped
public class UserBean implements Serializable, Principal {

    private static final long serialVersionUID = 1L;
    @NotNull(message = "The username can not be blank")
    @Size(min = 6, max = 12, message = "Please enter a valid username (6-12 characters)")
//@Pattern(regexp = "[a-zA-Z0-9_]", message = "Please enter a valid username consiting of only characters that are from the alphabet or are numeric ")
//@Pattern(regexp = "(a-z)(A-Z)(0-9))", message = "Please enter a valid username consiting of only characters that are from the alphabet or are numeric ")
    private String id;

    public String getId() {
        return id;
    }

    public void setId(String newValue) {
        id = newValue;
    }
    private String fileText;

    @NotNull(message = "You must select a file to upload")
    public String getFileText() {
        return fileText;
    }

    public void setFileText(String fileText) {
        this.fileText = fileText;
    }

    /**
     * public void getName(HttpServletRequest req, HttpServletResponse res)
     * throws ServletException, java.io.IOException { id = req.getRemoteUser();
     * }
     */
    @Override
    public String getName() {
        return getId();
    }
    /*
     * @Override
     *
     * public String request.remoteUser() { return getId();
     *
     * }
     * .
     */
} 
4

1 に答える 1

5

で初期化し@PostConstructます。

private String username;

@PostConstruct
public void init() {
    username = FacesContext.getCurrentInstance().getExternalContext().getRemoteUser();
}

または、フォーム送信の処理中にのみ必要な場合は、代わりにアクションメソッドで取得してください。

getRemoteUser()基本的にはと同じものを返すことに注意してくださいgetUserPrincipal().getName()


具体的な問題とは関係ありません。この種のBeanは、セッションスコープではなく、ビュースコープまたは会話スコープにする必要があります。また、Principalインターフェースを実装するべきではありません。それはまったく意味がありません。

于 2013-01-22T15:57:58.253 に答える