掲示板

Проверка входа пользователя на серверной стороне

thumbnail
7年前 に Yury Dan によって更新されました。

Проверка входа пользователя на серверной стороне

New Member 投稿: 7 参加年月日: 16/05/30 最新の投稿
Привет всем лайфреевцам.
Помогите пожалуйста, может кто, что подскажет. Суть проблемы:
У меня есть веб-приложение, задеплоенное на tomcat-liferay , его задача предоставлять данные клиентской стороне из бд по запросу (rest). Если пользователь вошел в систему, то данные можно передавать, если вышел соответственно в response должно прийти, что-то вроде access denied. Я решал данный вопрос с помощью liferay-cookies , а именно user_id и company_id. И все вроде как работало, но если истекла сессия, пользователя выкидывает, а вот cookies не очищаются, в отличии от того, если нажать кнопку "выйти", тогда все очистится. Мой файл portal-ext.properies :

...
session.timeout.auto.extend=false
session.timeout.redirect.on.expire=true
session.timeout.redirectUrl=/c/portal/logout
session.enable.phishing.protection=true
browser.cache.signed.in.disabled=true
session.timeout=2
session.timeout.warning=1

я надеялся, что данная строка поможет session.timeout.redirectUrl=/c/portal/logout, но нет
Проверку делал таким образом:

Cookie[] cookies = req.getCookies();
		String userId = null, password = null, companyId = null, uuid = null;
		for (Cookie c : cookies) {
			companyId = c.getName().equals("COMPANY_ID") ? c.getValue() : companyId;
			userId = c.getName().equals("ID") ? CommonUtil.hexStringToStringByAscii(c.getValue()) : userId;
		}
		if (userId == null || companyId == null) return errorLogin;
		try {
			Company company = CompanyLocalServiceUtil.getCompany(Long.valueOf(companyId));
			Key key = company.getKeyObj();
			String userDecrypt = Encryptor.decrypt(key, userId);
			return userDecrypt.length() &gt; 1 ? new ResponseEntity<string>(userDecrypt, HttpStatus.OK) : errorLogin;
		} catch (NumberFormatException | PortalException | SystemException | EncryptorException e) {
			log.error(e);
		}
		return new ResponseEntity<string>("User check Error! No cookies...", HttpStatus.SERVICE_UNAVAILABLE);
</string></string>

Может у кого будут какие другие идеи? Заранее очень благодарен за любую помощь....
thumbnail
7年前 に Yury Dan によって更新されました。

RE: Проверка входа пользователя на серверной стороне

New Member 投稿: 7 参加年月日: 16/05/30 最新の投稿
Видимо кроме как перенаправить на страницу с JS очищающем куки нет вариантов. Начал смотреть в торону HttpsSession и параметра USER_ID.
httpSession.getAttribute("USER_ID")
. Позже расскажу о результатах, может кому пригодится.
thumbnail
7年前 に Alexey Kakunin によって更新されました。

RE: Проверка входа пользователя на серверной стороне

Liferay Master 投稿: 621 参加年月日: 08/07/07 最新の投稿
Юрий, добрый день.

Это костыли на самом деле.

Правильней я думаю реализовать ваши REST-сервисы в виде Action-Hook-ов . В этом случае сами end-point-ы будут доступны для JS в контексте портала (например как /c/portal/my-rest-service) , и соотвественно будет доступна авторизация портала, а с другой стороны вы сможете вызывать весь код вашего веб-приложения.
thumbnail
7年前 に Yury Dan によって更新されました。

RE: Проверка входа пользователя на серверной стороне

New Member 投稿: 7 参加年月日: 16/05/30 最新の投稿
Добрый день, Алексей!
Большое спасибо за наводку. Покопаю в этом направлении...