15

Liferay用のポートレットを開発しようとしています。

現在ログインしているユーザーのユーザー名とパスワード(およびliferayが持っている他のデータ)にアクセスするにはどうすればよいですか?

また、ユーザーがパスワードを変更したときにいくつかのコードを実行できるようにしたいと思います。

4

4 に答える 4

15

getRemoteUser()オブジェクトを呼び出すことでユーザーIDを取得できPortletRequestます。これはJSR-168によって定義されているため、クロスポータル互換です。

IDを取得したら、getUserById()(Liferay固有のサービス)に電話して追加情報を取得できます。これは、ポートレットAPI仕様でカバーされていないものであるため、Liferayにロックされます。

于 2009-06-10T11:45:36.543 に答える
14

Liferay固有のもの、これはユーザーを取得するためにポートレットクラスに記述されるコードサンプルです。

ThemeDisplay themeDisplay = (ThemeDisplay)portletRequest.getAttribute(WebKeys.THEME_DISPLAY);

User user = themeDisplay.getRealUser(); // it gives you the actual Logged in User
//you can also use
// User user = themeDisplay.getUser(); // this would fetch the User you are impersonating 

long userId = user.getUserId();
String userName = user.getEmailAddress();

または、

long userId = themeDisplay.getRealUserId(); // themeDisplay.getUserId();
User user = UserLocalServiceUtil.getUser(userId);

ユーザーになりすます:

Liferayには、管理者(または適切な権限のセットを持つ人)がポータルの特定のユーザーになりすますことができるという概念があります。これにより、ポータルがそのユーザーにどのように見えるかを確認できます。

ユーザーがパスワードを変更したときにコードを実行する場合: 1つのアプローチは、フックプラグインを作成し、UserLocalServiceWrapperクラスを拡張してサービスをオーバーライドすることです。次に、パスワードの変更を確認し、カスタムクラス内でコードを実行します。

お役に立てれば。

于 2012-03-15T14:14:40.127 に答える
1

または、JavaScriptを使用することもできます。

Liferay.ThemeDisplay.getUserId()

Liferay名前空間には多くの優れた機能があります。十分に文書化されていないAPIを見てください。

また、javascript呼び出しで呼び出すことができるlocalhost:8080 / api/jsonwsで利用可能なWebサービスを見てください。

Liferay.Service(
  '/user/get-user-by-id',
  {
    userId: 10199
  },
  function(obj) {
    console.log(obj);
  }
);
于 2016-02-29T17:57:25.623 に答える
0

Liferayでユーザーを取得する簡単で簡単な方法の1つは、PortalUtil.getUser関数です。

User user = PortalUtil.getUser(portletRequest);
于 2016-03-04T10:10:14.933 に答える