Помогите! У меня такая проблема, проект Oracle adf Jdeveloper Studio Edition версии 12.2.1.0.0. У меня есть форма авторизации:
и на ней есть кнопка смены пароля для пользователя, то есть на форме две кнопки ВОЙТИ и СМЕНИТЬ ПАРОЛЬ, и три поля для ввода текста, это ПОЧТОВЫЙ ИНДЕКС, ЛОГИН ПОЛЬЗОВАТЕЛЯ и ПАРОЛЬ. Теперь у меня есть задача, когда пользователь хочет войти в систему, к кнопке ВХОД привязан метод doLogin().
public synchronized String doLogin() {
FacesContext fctx = FacesContext.getCurrentInstance();
fctx.getViewRoot().setLocale(new Locale("ru_RU"));
ExternalContext ectx = fctx.getExternalContext();
HttpServletRequest request = (HttpServletRequest) ectx.getRequest();
MDC.put("userInfo", zipcode + "/" + login);
if (StringUtil.isBlank(login) || StringUtil.isBlank(password) || zipcode == null) {
UserMessage.error(BelpostBundleManager.getMessage(MessageKeys.ERROR_INVALID_SIGN_IN));
return null;
}
Map params = new HashMap();
params.put("login", login);
params.put("zipcode", zipcode);
OperationResult userResult = (OperationResult) ADFBindingsUtil.executeOperationBinding("loadUserData", params);
if (userResult.failed()) {
log.warn(userResult.getSystemMessage());
UserMessage.error(userResult.getUserMessage());
return null;
}
UserData userData = (UserData) userResult.getValue();
try {
if (!_doLoginBool(request, userData.getUserName(), this.password)) {
throw new UnexpectedException("Login attempt failed");
}
if (userData.isDisabled()) {
throw new UnexpectedException("user " + userData.getUserName() + " is disabled",
"User is blcok");
}
OperationResult orgResult =
(OperationResult) ADFBindingsUtil.executeOperationBinding("loadOrgData", "zipcode", zipcode);
if (orgResult.failed()) {
throw new UnexpectedException("Can't load org data", orgResult.getUserMessage());
}
userData.setOrgData((OrgData) orgResult.getValue());
if (!userData.getOrgData().isActive()) {
throw new NotValidParametersException("inactive org zipcode: " + zipcode,
"department '" + userData.getOrgData().getOrgName() + "' (" +
zipcode + ") not active");
}
if (userData.getPasswNextUpdated() != null) {
restDays = userData.getPasswWarn();
}
if (userData.isPasswNeedUpdate() && (userData.getPasswNextUpdated() != null) && userData.getPasswWarn()!=null) {
staticPassword = password;
staticLogin = login;
userDataStatic = userData;
id = userData.getId();
staticRequest = request;
staticFctx = fctx;
staticZipcode = zipcode;
if ((userData.getPasswWarn() == 0 || userData.getPasswWarn() < 0)) {
UIComponentUtil.show("newPass");
return null;
}
else if (userData.getPasswWarn() > 0) {
UIComponentUtil.show("newPassTenDays");
return null;
}
return null;
}
SecurityUtil.setCurrentUserData(userData);
SessionUtil.clearSessionCustomValues();
log.info("Login succeeded. Roles: " + SecurityUtil.getCurrentRoles());
ViewHandler vh = fctx.getApplication().getViewHandler();
UIViewRoot viewRoot = vh.createView(fctx, "/rootPage.jsf");
fctx.setViewRoot(viewRoot);
fctx.renderResponse();
} catch (FailedLoginException e) {
log.warn("FailedLoginException");
UserMessage.error(BelpostBundleManager.getMessage(MessageKeys.ERROR_INVALID_SIGN_IN));
} catch (LoginException e) {
log.warn("LoginException");
UserMessage.error(Entry error. user is block");
} catch (Exception e) {
ExceptionManager.logError(e.getMessage(), e);
UserMessage.error(ExceptionManager.exToCheckedLocalized(e).getLocalizedMessage());
ServletAuthentication.done(request);
}
return null;
}
Ввел все данные для входа, нажал войти и на данный момент, в этом методе у меня есть проверка, что если пользователь первый раз заходит в систему, он должен изменить пароль.
if (userData.isPasswNeedUpdate() && (userData.getPasswNextUpdated() != null) && userData.getPasswWarn()!=null) {
staticPassword = password;
staticLogin = login;
userDataStatic = userData;
id = userData.getId();
staticRequest = request;
staticFctx = fctx;
staticZipcode = zipcode;
if ((userData.getPasswWarn() == 0 || userData.getPasswWarn() < 0)) {
UIComponentUtil.show("newPass");
return null;
}
else if (userData.getPasswWarn() > 0) {
UIComponentUtil.show("newPassTenDays");
return null;
}
return null;
}
Открывается всплывающее окно, в котором я ввожу старый пароль, новый пароль и подтверждение пароля.
Кроме того, номер почтового отделения и данные для входа я беру из формы авторизации. Во всплывающем окне только одна кнопка, это нормально, поскольку пользователь должен сменить пароль и войти в систему. При нажатии кнопки ОК выполняется метод смены пароля.
public synchronized void userPasswDialogSubmit(ActionEvent actionEvent) {
if (oldPassword == null || newPassword == null || confirmPassword == null) {
UserMessage.error("Required FIELDS");
} else {
if (!oldPassword.equals(staticPassword)) {
UserMessage.error("Incorrect password for user " + userDataStatic.getLogin());
} else {
Integer answer = updatePassword(newPassword, confirmPassword, userDataStatic.getId(), staticPassword);
if (answer != 0) {
UIComponentUtil.hide("newPass");
UIComponentUtil.hide("newPassTenDays");
UserMessage.info("To log in, enter a new password.");
resetStaticValue();
}
}
}
}
Вопрос в том, как передать в метод смены пароля индекс логина и почты?
В начале класса LoginBean я объявляю статические переменные, в которых буду введите поля из формы авторизации, это staticZipcode, staticLogin и staticPassword, а затем примите эти значения для работы во всплывающем окне. Я делаю это правильно? Читал, что возможны ошибки при высокой нагрузке на систему, когда приложением будет пользоваться большое количество пользователей. Что делать в этой ситуации?
public class LoginBean extends AModuleBase {
private String login, password;
private Long zipcode;
private String oldPassword;
private String newPassword;
private String confirmPassword;
private static Long id;
private static String staticPassword;
private static String staticLogin;
private static UserData userDataStatic;
private static HttpServletRequest staticRequest;
private static FacesContext staticFctx;
private static Long staticZipcode;
private Integer restDays;
Возможно, для работы со статическими переменными их нужно вводить в такой форме?
AdfFacesContext.getCurrentInstance().getViewScope().put("staticPassword", password);
AdfFacesContext.getCurrentInstance().getViewScope().put("staticLogin", login);
AdfFacesContext.getCurrentInstance().getViewScope().put("userDataStatic", userData);
AdfFacesContext.getCurrentInstance().getViewScope().put("staticZipcode", zipcode);
Подробнее здесь: https://stackoverflow.com/questions/789 ... ne-session
Oracle ADF, как выполнить запрос за один сеанс? ⇐ JAVA
Программисты JAVA общаются здесь
-
Anonymous
1726559883
Anonymous
Помогите! У меня такая проблема, проект Oracle adf Jdeveloper Studio Edition версии 12.2.1.0.0. У меня есть форма авторизации:
и на ней есть кнопка смены пароля для пользователя, то есть на форме две кнопки ВОЙТИ и СМЕНИТЬ ПАРОЛЬ, и три поля для ввода текста, это ПОЧТОВЫЙ ИНДЕКС, ЛОГИН ПОЛЬЗОВАТЕЛЯ и ПАРОЛЬ. Теперь у меня есть задача, когда пользователь хочет войти в систему, к кнопке ВХОД привязан метод doLogin().
public synchronized String doLogin() {
FacesContext fctx = FacesContext.getCurrentInstance();
fctx.getViewRoot().setLocale(new Locale("ru_RU"));
ExternalContext ectx = fctx.getExternalContext();
HttpServletRequest request = (HttpServletRequest) ectx.getRequest();
MDC.put("userInfo", zipcode + "/" + login);
if (StringUtil.isBlank(login) || StringUtil.isBlank(password) || zipcode == null) {
UserMessage.error(BelpostBundleManager.getMessage(MessageKeys.ERROR_INVALID_SIGN_IN));
return null;
}
Map params = new HashMap();
params.put("login", login);
params.put("zipcode", zipcode);
OperationResult userResult = (OperationResult) ADFBindingsUtil.executeOperationBinding("loadUserData", params);
if (userResult.failed()) {
log.warn(userResult.getSystemMessage());
UserMessage.error(userResult.getUserMessage());
return null;
}
UserData userData = (UserData) userResult.getValue();
try {
if (!_doLoginBool(request, userData.getUserName(), this.password)) {
throw new UnexpectedException("Login attempt failed");
}
if (userData.isDisabled()) {
throw new UnexpectedException("user " + userData.getUserName() + " is disabled",
"User is blcok");
}
OperationResult orgResult =
(OperationResult) ADFBindingsUtil.executeOperationBinding("loadOrgData", "zipcode", zipcode);
if (orgResult.failed()) {
throw new UnexpectedException("Can't load org data", orgResult.getUserMessage());
}
userData.setOrgData((OrgData) orgResult.getValue());
if (!userData.getOrgData().isActive()) {
throw new NotValidParametersException("inactive org zipcode: " + zipcode,
"department '" + userData.getOrgData().getOrgName() + "' (" +
zipcode + ") not active");
}
if (userData.getPasswNextUpdated() != null) {
restDays = userData.getPasswWarn();
}
if (userData.isPasswNeedUpdate() && (userData.getPasswNextUpdated() != null) && userData.getPasswWarn()!=null) {
staticPassword = password;
staticLogin = login;
userDataStatic = userData;
id = userData.getId();
staticRequest = request;
staticFctx = fctx;
staticZipcode = zipcode;
if ((userData.getPasswWarn() == 0 || userData.getPasswWarn() < 0)) {
UIComponentUtil.show("newPass");
return null;
}
else if (userData.getPasswWarn() > 0) {
UIComponentUtil.show("newPassTenDays");
return null;
}
return null;
}
SecurityUtil.setCurrentUserData(userData);
SessionUtil.clearSessionCustomValues();
log.info("Login succeeded. Roles: " + SecurityUtil.getCurrentRoles());
ViewHandler vh = fctx.getApplication().getViewHandler();
UIViewRoot viewRoot = vh.createView(fctx, "/rootPage.jsf");
fctx.setViewRoot(viewRoot);
fctx.renderResponse();
} catch (FailedLoginException e) {
log.warn("FailedLoginException");
UserMessage.error(BelpostBundleManager.getMessage(MessageKeys.ERROR_INVALID_SIGN_IN));
} catch (LoginException e) {
log.warn("LoginException");
UserMessage.error(Entry error. user is block");
} catch (Exception e) {
ExceptionManager.logError(e.getMessage(), e);
UserMessage.error(ExceptionManager.exToCheckedLocalized(e).getLocalizedMessage());
ServletAuthentication.done(request);
}
return null;
}
Ввел все данные для входа, нажал войти и на данный момент, в этом методе у меня есть проверка, что если пользователь первый раз заходит в систему, он должен изменить пароль.
if (userData.isPasswNeedUpdate() && (userData.getPasswNextUpdated() != null) && userData.getPasswWarn()!=null) {
staticPassword = password;
staticLogin = login;
userDataStatic = userData;
id = userData.getId();
staticRequest = request;
staticFctx = fctx;
staticZipcode = zipcode;
if ((userData.getPasswWarn() == 0 || userData.getPasswWarn() < 0)) {
UIComponentUtil.show("newPass");
return null;
}
else if (userData.getPasswWarn() > 0) {
UIComponentUtil.show("newPassTenDays");
return null;
}
return null;
}
Открывается всплывающее окно, в котором я ввожу старый пароль, новый пароль и подтверждение пароля.
Кроме того, номер почтового отделения и данные для входа я беру из формы авторизации. Во всплывающем окне только одна кнопка, это нормально, поскольку пользователь должен сменить пароль и войти в систему. При нажатии кнопки ОК выполняется метод смены пароля.
public synchronized void userPasswDialogSubmit(ActionEvent actionEvent) {
if (oldPassword == null || newPassword == null || confirmPassword == null) {
UserMessage.error("Required FIELDS");
} else {
if (!oldPassword.equals(staticPassword)) {
UserMessage.error("Incorrect password for user " + userDataStatic.getLogin());
} else {
Integer answer = updatePassword(newPassword, confirmPassword, userDataStatic.getId(), staticPassword);
if (answer != 0) {
UIComponentUtil.hide("newPass");
UIComponentUtil.hide("newPassTenDays");
UserMessage.info("To log in, enter a new password.");
resetStaticValue();
}
}
}
}
Вопрос в том, как передать в метод смены пароля индекс логина и почты?
В начале класса LoginBean я объявляю статические переменные, в которых буду введите поля из формы авторизации, это staticZipcode, staticLogin и staticPassword, а затем примите эти значения для работы во всплывающем окне. Я делаю это правильно? Читал, что возможны ошибки при высокой нагрузке на систему, когда приложением будет пользоваться большое количество пользователей. Что делать в этой ситуации?
public class LoginBean extends AModuleBase {
private String login, password;
private Long zipcode;
private String oldPassword;
private String newPassword;
private String confirmPassword;
private static Long id;
private static String staticPassword;
private static String staticLogin;
private static UserData userDataStatic;
private static HttpServletRequest staticRequest;
private static FacesContext staticFctx;
private static Long staticZipcode;
private Integer restDays;
Возможно, для работы со статическими переменными их нужно вводить в такой форме?
AdfFacesContext.getCurrentInstance().getViewScope().put("staticPassword", password);
AdfFacesContext.getCurrentInstance().getViewScope().put("staticLogin", login);
AdfFacesContext.getCurrentInstance().getViewScope().put("userDataStatic", userData);
AdfFacesContext.getCurrentInstance().getViewScope().put("staticZipcode", zipcode);
Подробнее здесь: [url]https://stackoverflow.com/questions/78993078/oracle-adf-how-do-request-in-one-session[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия