[开发] 关于liferay portlet开发的userid(用户)问题
liushl2001
2007-05-14
在portlet中,
记录访问者的信息是经常遇到的, 请问在liferay portlet中如何得到登录的用户信息呢? 由于是刚开始使用liferay, 我的portlet是和例子一样采用的独立web应用方式, 查看liferay的portlet源代码所使用的方法,要移植过来感觉关联太多, 请问是不是liferay的portlet中有直接取得登录信息的方法呢? 先谢谢你的回复! |
|
LiuYiJie2007
2007-05-15
<%@ taglib uri="http://java.sun.com/portlet" prefix="portlet" %>
<%@ taglib uri="http://liferay.com/tld/security" prefix="liferay-security" %> <%@ taglib uri="http://liferay.com/tld/theme" prefix="liferay-theme" %> <%@ taglib uri="http://liferay.com/tld/ui" prefix="liferay-ui" %> <%@ page import="com.liferay.portal.theme.ThemeDisplay" %> <portlet:defineObjects /> <liferay-theme:defineObjects /> <liferay-theme:meta-tags /> <% System.out.println("*********user id*********" +themeDisplay.getUserId()); %> 这样可以得到 登陆用户ID |
|
冬雪风铃
2007-05-15
还可以通过获取session来实现,登陆人的id的session的字符串是"j_username"。
|
|
liushl2001
2007-05-15
谢谢回复,我的用法和冬雪风铃讲得一样
我在Struts Action中采如下的代码测试如下: HttpSession ses = req.getSession(); String user=(String) ses.getAttribute("j_username"); user=(String) ses.getAttribute("j_remoteuser"); 但是,并没有得到数据,user返回为null; 查看liferay源代码,发现在liferay处理登录的时候的确是作了如下的语句:(LoginAction.java) ses.setAttribute("j_username", userId); ses.setAttribute("j_password", user.getPassword()); ses.setAttribute("j_remoteuser", userId); 但是我还是在action中不能取得,这是不是我只得到了portlet的session呢?所以里面j_remoteuser等这些属性没有? |
|
liushl2001
2007-05-15
由LiuYiJie2007的回复,
查看了com.liferay.taglib.theme.DefineObjectsTag的源代码 发现了以下代码可以直接取得用户信息 ThemeDisplay themeDisplay =(ThemeDisplay)req.getAttribute("THEME_DISPLAY"); themeDisplay.getUser()。 但是,由于现在我的工程是与liferay源代码非一个工程,我是将liferay源代码编译运行,所以我的工程就不能直接引用ThemeDisplay , 我发现移植过来关联太多, 今天还是没有能狗解决问题。。 |
|
liushl2001
2007-05-15
接4楼,
今天通过对liferay源代码跟踪,确定两个session不是同一个session, 导致j_username等不能取出 但是,发现liferay在进行环境初始化时,是以USER_ID的属性名进行的保存,所以,以下这简单的两句就是答案了:) HttpSession ses = req.getSession(); String user=(String) ses.getAttribute("USER_ID"); 再次感谢LiuYiJie2007与冬雪风铃的回复。 |
|
qsjustin
2007-05-25
request.getRemoteUser()
这样不就可以了? |
|
ahuig
2007-07-13
ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY); User user = themeDisplay.getUser(); 应该可以得到吧,不知道你是怎么使用的?我们当时直接用的liferay打包好的jar PS: ServicePreAction里会设置ThemeDisplay 的相关属性,下面是取USER的部分 // User User user = null; try { user = PortalUtil.getUser(req); } catch (NoSuchUserException nsue) { return; } // Is the user signed in? boolean signedIn = false; if (user == null) { user = company.getDefaultUser(); } else { signedIn = true; } |
|
wildwind
2007-07-16
楼上的正解!themeDisplay!
|
|
Display88
2007-09-12
request.getRemoteUser() 取出来的就是userId啊
|