Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> поддержание сессий, cookies и другие способы 
:(
    Опции темы
Maksym
Дата 27.6.2007, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

Репутация: 24
Всего: 62



Цитата(Tony @  27.6.2007,  14:43 Найти цитируемый пост)
Nu tak ja i govorju 4to dlja ponogo kontrolja nado povesit' sessionListener.

да, согласен, так будет надежно
PM MAIL   Вверх
Tony
  Дата 27.6.2007, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1159
Регистрация: 3.3.2006
Где: Riga

Репутация: 6
Всего: 12



Prostoj primer
mapping
Код

  <managed-bean>
    <managed-bean-name>personBean</managed-bean-name>
    <managed-bean-class>com.jsftest.SimpleBean</managed-bean-class>
    <managed-bean-scope>request</managed-bean-scope>
  </managed-bean>
    
 <navigation-rule>
   <from-view-id>/main.jsp</from-view-id>
    <navigation-case>  
     <from-action>#{personBean.saveAction}</from-action>
      <from-outcome>success</from-outcome>
      <to-view-id>/result.jsp</to-view-id>
    </navigation-case>
    <navigation-case>
      <from-action>#{personBean.saveAction}</from-action>
      <from-outcome>error</from-outcome>
      <to-view-id>/main.jsp</to-view-id>
    </navigation-case>
  </navigation-rule>


SimpleBean.java
Код

public class SimpleBean{
    private Logger logger = Logger.getLogger(this.getClass());
    private Short age;
    private String personName;
                   
                   public void setPersonName(String personName){
        this.personName = personName;
    }

    public void setAge(Short age) {
        this.age = age;
    }
    public String saveAction(ValueChangeEvent event){
        FacesContext context = FacesContext.getCurrentInstance();
        String result = "success";
        if (personName == null || personName.length() == 0){
            FacesMessage message = new FacesMessage("Name is empty");
            message.setSeverity(FacesMessage.SEVERITY_ERROR);
            context.addMessage("userForm:firstname", message);
            result = "error";
        }
         logger.info("invoked");
         return result;
    }


main.jsp
Код

<h:form id="userForm">
           <h:inputText value="#{personBean.personName}" id="firstname"/>
           <h:inputText value="#{personBean.age}" id="age"/>
         <h:commandButton action="#{personBean.saveAction}" value="test" id="uuu"/> 
         </h:form>



--------------------
user posted image
user posted image
PM MAIL Skype   Вверх
Georg4
Дата 28.6.2007, 09:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 961
Регистрация: 2.11.2002

Репутация: нет
Всего: 10



Я тут услышал от коллеги швейцарца, что как то в web.xml можно выставить контроль над сессией. Тоесть опросить как-то сервер  о том есть ли сессия с этим бином, и если есть сразу редирект на следущую за логином страницу, а если нет, то на логин пейдж


--------------------
Никто и никогда не должен решать одну проблему дважды
PM MAIL ICQ   Вверх
Georg4
Дата 28.6.2007, 09:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 961
Регистрация: 2.11.2002

Репутация: нет
Всего: 10



Видимо он как-то имел ввиду этот 
http://edocs.bea.com/wls/docs61/webapp/web_xml.html#1019996


--------------------
Никто и никогда не должен решать одну проблему дважды
PM MAIL ICQ   Вверх
PashaOvechkin
Дата 28.6.2007, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 394
Регистрация: 1.4.2007
Где: Riga, Latvia

Репутация: 1
Всего: 4



Ты явно о etom

form based authentication, вот толЬко с некоторыми контейнерами могут возникнутЬ проблемы (OC4J)
Если у тебя Томкат - всё ок

Это сообщение отредактировал(а) PashaOvechkin - 28.6.2007, 10:04
PM MAIL Skype   Вверх
Tony
Дата 28.6.2007, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1159
Регистрация: 3.3.2006
Где: Riga

Репутация: 6
Всего: 12



Roli eto sux. Tu budesh privjazan s serveru. Lutszhe sdelaj 4erz filter. A nas4jot web-xml ti mozhesh tam ukasat' skolko budet zhit' sessija.


--------------------
user posted image
user posted image
PM MAIL Skype   Вверх
Georg4
Дата 28.6.2007, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 961
Регистрация: 2.11.2002

Репутация: нет
Всего: 10



Смотрите:
в web.xml я добавил следующие таги:

 
Код

<auth-constraint>
     <role-name>admin</role-name>
   </auth-constraint>
  </security-constraint>

 <login-config>
      <auth-method>FORM</auth-method>
      <realm-name>YegorProject2</realm-name>
      <form-login-config>
        <form-login-page>/YegorProject2/login.faces</form-login-page>
        <form-error-page>/YegorProject2/resultforfail.jspx</form-error-page>
      </form-login-config>
    </login-config>

<security-role>
   <description>
     The role that is required to log in to the A Application
   </description>
   <role-name>admin</role-name>
  </security-role>


<session-config>
      <session-timeout>10</session-timeout>
    </session-config>


Соответственно у томката в конфиге есть запись:

 <role rolename="admin"/>
<user password="admin" roles="admin,manager" username="admin"/>

В login.jspx
изменил имена:
на необходимые:
j_username и j_password
Код

<td> <h:outputText value="Enter Login ID: " /></td>
                <td> <h:inputText id="j_username" required="true"
                      binding="#{LoginWithCompBinding.j_username}">
                     <f:validateLength minimum="5" maximum="30" />
                        </h:inputText>
                </td>
                <td> <h:message for="j_username" />
                </td>
                </tr>
                <tr>
                    <td><h:outputText value="Enter Password: " /></td>
                    <td><h:inputSecret id="j_password" required="true"
                        binding="#{LoginWithCompBinding.j_password}">
                         <f:validateLength minimum="5" maximum="30" />
                        </h:inputSecret> </td>
                <td>
                <h:message for="j_password" />


В коде который занимается собственно проверкой логина соответственно:

Код

public class LoginWithCompBinding{
    HtmlInputText j_username;
    HtmlInputSecret j_password;

    public LoginWithCompBinding(){}

    public String CheckValidUser(){

/** FacesContext.getCurrentInstance().getExternalContext().getSession(true);*/
        if(j_username .getValue().equals("admin") && j_password.getValue().equals("admin"))
            return "success";
        else
        {            FacesContext context = FacesContext.getCurrentInstance();
            HttpSession session = (HttpSession) context.getExternalContext().getSession(false);
            session.invalidate();
            return "fail";}

    }



    public HtmlInputText getLoginname(){
        return j_username ;
    }

    public void setLoginname(HtmlInputText j_username){
        this.j_username  = j_username;
    }

    public HtmlInputSecret getPassword(){
        return j_password;
    }

    public void setPassword(HtmlInputSecret j_password){
        this.j_password = j_password;
    }

}


В случае если return "success" он через faces-config.xml форвардится на страницу resultforsuccess.jspx где только написано "ОК!"

В общем чего-то не работает!


--------------------
Никто и никогда не должен решать одну проблему дважды
PM MAIL ICQ   Вверх
Tony
Дата 28.6.2007, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1159
Регистрация: 3.3.2006
Где: Riga

Репутация: 6
Всего: 12



Код

 HtmlInputText j_username;
    HtmlInputSecret j_password;


Normalno.....  Zameni eto na  private String j_username i private String j_password;

Sootvetstvenno setXXX i getXXX


--------------------
user posted image
user posted image
PM MAIL Skype   Вверх
Georg4
Дата 28.6.2007, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 961
Регистрация: 2.11.2002

Репутация: нет
Всего: 10





вот что выяснил пока.
В web.xml 
нужно  
 <security-constraint>
   <display-name>A Configuration Security Constraint</display-name>
   <web-resource-collection>
     <web-resource-name>Protected Area</web-resource-name>
      <url-pattern>/*</url-pattern>

А в логине.jspx 

<h:commandButton value="Login" action="j_security_check" />
вместо
<h:commandButton value="Login" action="#{LoginWithCompBinding.CheckValidUser}" />

Тогда если в браузере наберешь resultforsuccess.faces
то автоматически на страницу логина попадаешь.
Проблема в том, что после ввода логина и пароля (правильного)
оно не редиректит на resultforsuccess.jspx (потому как вместо моего экшна action="#{LoginWithCompBinding.CheckValidUser} на кнопке, стоит action="j_security_check". 

Но проблема и в другом если после правильного логина (даже без редиректа)  ввести в браузер опять resultforsuccess.faces, то снова выходит на логинпейдж. 

Там ещё, сдается мне, был в web.xml метод 
<http-method>POST</http-method>
Форма должна ведь быть с методом POST, а она по умолчанию GET.
А в <h:form> этого задать нельзя.

Tony,  лучше по делу скажи, а обезопасить успеем.
пока будет так
Код

public class LoginWithCompBinding{
    HtmlInputText j_username;
    HtmlInputSecret j_password;

    public LoginWithCompBinding(){}

    public String CheckValidUser(){

/** FacesContext.getCurrentInstance().getExternalContext().getSession(true);*/
        if(j_username.getValue().equals("admin") && j_password.getValue().equals("admin"))
            return "success";
        else
        {            FacesContext context = FacesContext.getCurrentInstance();
            HttpSession session = (HttpSession) context.getExternalContext().getSession(false);
            session.invalidate();
            return "fail";}

    }

    public HtmlInputSecret getJ_password() {
        return j_password;
    }

    public void setJ_password(HtmlInputSecret j_password) {
        this.j_password = j_password;
    }

    public HtmlInputText getJ_username() {
        return j_username;
    }

    public void setJ_username(HtmlInputText j_username) {
        this.j_username = j_username;
    }

}



--------------------
Никто и никогда не должен решать одну проблему дважды
PM MAIL ICQ   Вверх
Tony
Дата 28.6.2007, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1159
Регистрация: 3.3.2006
Где: Riga

Репутация: 6
Всего: 12



mda.... Udachi!  smile 


--------------------
user posted image
user posted image
PM MAIL Skype   Вверх
Georg4
Дата 28.6.2007, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 961
Регистрация: 2.11.2002

Репутация: нет
Всего: 10



Tony,  А может поконструктивнее у что-то естьsmile?


--------------------
Никто и никогда не должен решать одну проблему дважды
PM MAIL ICQ   Вверх
Georg4
Дата 4.7.2007, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 961
Регистрация: 2.11.2002

Репутация: нет
Всего: 10



После длительных совещаний со швейцарскими коллегами было решено забить на контроль сессий на JSF и реализовывать на JSP.


--------------------
Никто и никогда не должен решать одну проблему дважды
PM MAIL ICQ   Вверх
Tony
Дата 4.7.2007, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1159
Регистрация: 3.3.2006
Где: Riga

Репутация: 6
Всего: 12



A v jsf sessii kakieto drugii ? smile 


--------------------
user posted image
user posted image
PM MAIL Skype   Вверх
Georg4
Дата 4.7.2007, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 961
Регистрация: 2.11.2002

Репутация: нет
Всего: 10



Ну не получается.
А чем копаться JSP и всё в два движения.


--------------------
Никто и никогда не должен решать одну проблему дважды
PM MAIL ICQ   Вверх
PashaOvechkin
Дата 4.7.2007, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 394
Регистрация: 1.4.2007
Где: Riga, Latvia

Репутация: 1
Всего: 4



Хммм...

Попробуй иначе.
 "" логин страничку нарисуй вот так 


Код



<form action='<%= response.encodeURL("j_security_check") %>' method="POST" > 
  <DIV align="center">
    <table name="detail" align="center">
      <tr>
        <th>Lietotajs</th>
        <td>
          <input type="text" name="j_username"/>
          
        </td>
      </tr>
      <tr>
        <th>Parole</th>
        <td>          
          <input type="password" name="j_password"/>
        </td>
      </tr>
      <tr>
        <th></th>
        <td>
          <input type="submit" value="Login"/>
        </td>
      </tr>
    </table>
  </DIV>


</form> 


правилЬно опиши всё в веб.хмл, а после логина, пускай апликацию менеджит йсф...
PM MAIL Skype   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.1239 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.