1

ユーザーがログインしている間、次の方法でユーザー名を見つけることができます。

FacesContext context = FacesContext.getCurrentInstance(); 
       HttpServletRequest request = (HttpServletRequest) context.getExternalContext().getRequest();
request.login(username, password);
Principal principal = request.getUserPrincipal();
principal.getName();

しかし、どうすればユーザーグループを取得できますか(dbクエリを実行せずに)。

以下を試しましたが、機能しません。すべてのグループで常にfalseが返されます。

context.getExternalContext().isUserInRole("USER")
request.isUserInRole("USER")
4

2 に答える 2

0

グループと役割は異なる概念であることを指摘しておきます。

誰かが記事を書くことができ、誰かがコメントすることしかできず、他の人が読むことしかできない Web アプリがあるとします。つまり、ライター、コメンター、リーダーの 3 つの役割があります。

現在、この Web アプリは組織の内部で使用されています。組織図には、PROJECTMANAGER、ARCHITECT、SYSADMIN、および DEVELOPER というグループがあります。

簡単に言うと、ロールは webapp に関連し、グループは組織図に関連しています。

glassfish-web.xml では、グループやユーザーをロールにバインドできます。たとえば、PROJECTMANAGER と ARCHITECT は WRITER、SYSADMIN は COMMENTER、DEVELOPER は READER です。

したがって、一般に、db クエリを使用せずにユーザーのグループを取得する方法はありません。とにかく策略は、グループ (glassfish-web.xml 内) と同じ名前のロールを作成することです。管理コンソールのほかに、ロールをグループに自動的にマップするフラグがあります。

于 2012-08-03T12:19:24.127 に答える