sábado, 19 de septiembre de 2020

Selected Item Picker XAMARIN no funciona

CLASE DE OBJETO SELECCIONADO

 public class ItemsSourcesModel : ModelBase

    {

        string itemDisplay;

        string itemnId;

        public string ItemDisplay

        {

            get { return itemDisplay; }

            set

            {

                itemDisplay = value;

                OnPropertyChanged();

            }

        }

        public string ItemnId

        {

            get { return itemnId; }

            set

            {

                itemnId = value;

                OnPropertyChanged();

            }

        } 

    }


// VIEW MODEL Selected Item

public ItemsSourcesModel SelectedItemPicker1

        {

            get { return _selectedItemPicker1; }

            set

            {

                _selectedItemPicker1 = value;

                OnPropertyChanged("SelectedItemPicker1");

            }

        }

 

 ASIGNACION DE VALOR


 ItemsSourcesModel itemSelect = new ItemsSourcesModel();

 itemSelect.ItemnId = “1”;

 itemSelect.ItemDisplay = “Valor 1”;                         

 SelectedItemPicker1 = itemSelect;


// SOLUCION:

En la clase se debe agragar la interfaz IEquatable, con esto me funciono

 public class ItemsSourcesModel : ModelBase , IEquatable<ItemsSourcesModel>

    {
        string itemDisplay;
        string itemnId;
        public string ItemDisplay
        {
            get { return itemDisplay; }
            set
            {
                itemDisplay = value;
                OnPropertyChanged();
            }
        }
        public string ItemnId
        {
            get { return itemnId; }
            set
            {
                itemnId = value;
                OnPropertyChanged();
            }
        }

        public bool Equals(ItemsSourcesModel other)
        {
            if (other == null) return false;
            return (this.ItemDisplay.Equals(other.ItemDisplay));
        }
    }

sábado, 12 de septiembre de 2020

jueves, 10 de septiembre de 2020

Poblemas con cookies Chrome 80 SameSite IIS

 Con el lanzamiento estable de Chrome 80 este mes, Chrome comenzará a aplicar un nuevo sistema de clasificación de cookies seguro por defecto, tratando las cookies que no tienen un valor de SameSite declarado como las  cookies de SameSite = Lax . Solo cookies configuradas como SameSite = None; Secure estará disponible en contextos de terceros, siempre que se acceda a ellos desde conexiones seguras.

Antecedentes.

 Las Cookies es uno de los métodos para agregar y mantener de forma persistentes variables de estado para sitios web. Durante los años las capacidades han crecido y evolucionado, dejando en las plataformas algunas cuestiones problemáticas de legado. Para resolver esto, en los navegadores de internet (Chrome, Firefox y Edge) están realizando cambios en su comportamiento para reforzar los elementos por defecto para conservar la privacidad. 

Cambios al comportamiento por default sin SameSite Strict

En los nuevos cambios de seguridad de los navegadores establecen el valor Lax a la variable SameSite, esto normalmente es omitido por los desarrolladores. La introducción del atributo SameSite en una cookie, provee tres diferentes formas de controlar el comportamiento:


Strict

Con este valor en la cookie solo se podría enviar en el contexto del dominio que las genera (first-party), es decir, la cookie solo podría ser enviado si el sitio para la cookie coincide con el sitio actual. No envía ninguna cookie en las peticiones que se realizan desde sitios diferentes a donde se originaron. • Set-Cookie: promo_shown=1; SameSite=Strict 

Lax (Default). 

Con valor Lax(relajado) las cookies no se envían, solo si el usuario selecciona cualquier otro enlace del sitio las cookies pueden enviarse. • Set-Cookie: promo_shown=1; SameSite=Lax 

None. 

Las cookies pueden ser enviadas en todos los contextos, lo que significa que puedes usar este valor para comunicar claramente que quieres intencionalmente que las cookies sean enviadas en contexto de dominios externos (third-party) • Set-Cookie: promo_shown=1; SameSite=Lax Agregando la directiva Secure al final de la declaración de la cookie, significa que requiere un contexto de seguridad. Set-Cookie: widget_session=abc123; SameSite=None; Secure 


Solución - Configuración

 La solución puede estar orientada a definir las propiedades de seguridad a nivel web.config de cada aplicación o configurar el URL Rewrite desde el IIS a nivel Sitio o a nivel raíz del IIS, este último fue el que utilizamos ya que se hereda la configuración a todos los sitios y aplicaciones internas del servidor. El primer paso es seleccionar la opción URL Rewrite de la lista de características del servidor web: 

Sobre la configuración general de iis:

Dentro de la vista de URL Rewrite seleccionamos la opción View Server Variables

Adicionamos una nueva variable del servidor nombrada RESPONSE_Set-Cookie:

Regresamos a la vista de reglas dando click en la opción "Back to Rules", agregamos una nueva regla seleccionando la opción Add Rule(s) de tipo Outbound rules en blanco:

 

Proporcionamos las siguientes características de la regla:

Por ultimo se recomienda reiniciar el iis