2009-06-09 36 views
15

Tôi đang cố gắng phát triển một portlet cho liferay.Truy cập người dùng từ một portlet đời?

Tôi làm cách nào để có quyền truy cập vào tên người dùng và mật khẩu (và các dữ liệu khác trong ngày có) của người dùng hiện đang đăng nhập?

Tôi cũng muốn có thể thực thi một số mã khi người dùng thay đổi mật khẩu của họ.

Trả lời

15

Bạn có thể lấy User ID bằng cách gọi getRemoteUser() trong đối tượng PortletRequest. Điều này được xác định bởi JSR-168 do đó nó tương thích cổng chéo.

Khi bạn có ID, bạn có thể tìm nạp thông tin bổ sung bằng cách gọi getUserById() (dịch vụ cụ thể Liferay). Đây là một cái gì đó không được đề cập trong đặc tả của Portlet API, vì vậy nó khóa bạn vào Liferay.

+3

Các dịch vụ cụ thể Liferay là UserServiceUtil – frandevel

+1

Về mặt kỹ thuật, bạn có thể ở lại thêm cổng thông tin độc lập bằng cách sử dụng 'portletRequest.getAttribute (PortletRequest.USER_INFO)'.Điều này trả về một bản đồ của các thuộc tính người dùng có thể được xác định bởi mỗi thực hiện cổng thông tin. Xem 'portlet-custom.xml' và' com.liferay.portlet.UserAttributes' cho thuộc tính người dùng của Liferay. Đối với hầu hết các phần, tên thuộc tính người dùng là những cái được khuyến nghị bởi đặc tả portlet. –

14

Liferay thứ cụ thể, đây là một mẫu mã được viết bằng Portlet lớp của bạn để lấy lại tài khoản:

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(); 

Ngoài ra;

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

Mạo danh tài khoản:

Liferay có một khái niệm mà các quản trị viên (hoặc người được với các thiết lập đúng các điều khoản) có thể mạo danh một người dùng cụ thể của cổng thông tin. Thông qua điều này họ có thể thấy cổng thông tin trông như thế nào với người dùng đó.

Đối với thi mã khi người dùng thay đổi mật khẩu của họ: Một cách tiếp cận sẽ là để tạo ra một hook plugin và trọng các dịch vụ bằng cách mở rộng các lớp UserLocalServiceWrapper. Sau đó kiểm tra thay đổi mật khẩu và thực thi mã của bạn bên trong lớp tùy chỉnh của bạn.

Hy vọng điều này sẽ hữu ích.

1

Hoặc bạn chỉ có thể sử dụng javascript:

Liferay.ThemeDisplay.getUserId() 

Có rất nhiều tốt đẹp để thể thiếu trong không gian tên Liferay, hãy nhìn vào các API không rất tốt tài liệu:

Ngoài ra, hãy xem trang web rvices sẵn dưới localhost: 8080/api/jsonws mà bạn có thể gọi với một cuộc gọi javascript:

Liferay.Service(
    '/user/get-user-by-id', 
    { 
    userId: 10199 
    }, 
    function(obj) { 
    console.log(obj); 
    } 
); 
0

Một đơn giản và dễ dàng để có được những người sử dụng trong Liferay là PortalUtil.getUser chức năng.

User user = PortalUtil.getUser(portletRequest); 
Các vấn đề liên quan