WEB.CONFIG y AUTHENTICATE

02/06/2005 - 02:53 por Jose Fernandez | Informe spam
Hola mi gente

tengo una duda

Yo tengo una carpeta a la cual nadie que no se haya logueado puede entrar.
Esa carpeta es Admin
dentro de esa carpeta yo tengo un web.config con este codigo
<configuration>
<system.web>
<authorization>
<deny users="?" />
</authorization>
<globalization requestEncoding="UTF-8" responseEncoding="UTF-8" />
</system.web>
</configuration>

ahora bien. en el web.config general del sitio tengo este pedazo de codigo
<authentication mode="Forms">
<forms name=".NACIONALES" loginUrl="Admin/login.aspx"
protection="All" timeout="60" />
</authentication>

Esto me permite que los usuarios que no esten registrados puedan entrar a
esa pagina de esa carpeta Admin exclusivamente para registrarse y asi poder
tener acceso total a todas las paginas de Admin.

MI PREGUNTA

Yo ahora tengo una segunda carpeta que necesito proteger al igual pero que
es para los usuarios, no para los administradores.
La Carpeta digamos se llama MiZona. Dentro pongo el mismo webconfig
protegiendola de usuarios no registrados.
Podria yo poner en el web.config general otra linea agregando la pagina de
registro:

<authentication mode="Forms">
<forms name=".NACIONALES" loginUrl="Admin/login.aspx"
protection="All" timeout="60" />
<forms name=".NACIONALES" loginUrl="MiZona/login.aspx"
protection="All" timeout="60" />
</authentication>

De ser asi, se me ocurre que quizas para el sistema es lo mismo que entren
por admin o mizona pues estarian en efectos de logueados OK. claro, se
podria resolver con una variable de session que identificaria que tipo de
usuario se registro para proteger el acceso a cada una de las carpetas.

Que piensan?

Saludos

Preguntas similare

Leer las respuestas

#1 A.Poblacion
02/06/2005 - 08:21 | Informe spam
"Jose Fernandez" wrote in message
news:
Yo tengo una carpeta a la cual nadie que no se haya logueado puede entrar.
Esa carpeta es Admin
dentro de esa carpeta yo tengo un web.config con este codigo
<configuration>
<system.web>
<authorization>
<deny users="?" />
</authorization>
<globalization requestEncoding="UTF-8" responseEncoding="UTF-8" />
</system.web>
</configuration>

ahora bien. en el web.config general del sitio tengo este pedazo de codigo
<authentication mode="Forms">
<forms name=".NACIONALES" loginUrl="Admin/login.aspx"
protection="All" timeout="60" />
</authentication>

Esto me permite que los usuarios que no esten registrados puedan entrar a
esa pagina de esa carpeta Admin exclusivamente para registrarse y asi


poder
tener acceso total a todas las paginas de Admin.

MI PREGUNTA

Yo ahora tengo una segunda carpeta que necesito proteger al igual pero que
es para los usuarios, no para los administradores.
La Carpeta digamos se llama MiZona. Dentro pongo el mismo webconfig
protegiendola de usuarios no registrados.
Podria yo poner en el web.config general otra linea agregando la pagina de
registro:

<authentication mode="Forms">
<forms name=".NACIONALES" loginUrl="Admin/login.aspx"
protection="All" timeout="60" />
<forms name=".NACIONALES" loginUrl="MiZona/login.aspx"
protection="All" timeout="60" />
</authentication>

De ser asi, se me ocurre que quizas para el sistema es lo mismo que entren
por admin o mizona pues estarian en efectos de logueados OK. claro, se
podria resolver con una variable de session que identificaria que tipo de
usuario se registro para proteger el acceso a cada una de las carpetas.



Si lo que quieres es que en una carpeta entren solo ciertos usuarios y en
la otra los administradores, lo que deberias hacer es utilizar roles, y en
el web config poner
<authorization>
<allow roles="Administradores" />
<deny roles="*" />
</authorization>
Esto permite entrar a los administradores y cerrar el paso a los demás.
Para que esto funcione, tienes que asignarle un rol al usuario durante el
login. La forma de hacerlo es que en el login.aspx, en lugar de hacer el
FormsAuthentication.RedirectFromLoginPage que probablemente estás metiendo
ahora mismo, le creas directamente la cookie de autenticacion (new
FormsAuthenticationTicket(...)) y en el parámetro UserData le pones el rol o
roles, la cifras (FormsAuthentication.Encrypt), creas la cookie, y saltas a
la dirección original (FormsAuthentication.GetRedirectUrl). Después te vas
al global.asax y en el evento Authenticate_Request decodificas la cookie,
sacas los roles, creas un GenericPrincipal, y se lo asignas al Context.User.
Asi a primera vista parece complicado, pero son solo unas pocas lineas de
código y una vez que las hayas puesto te vale para siempre. Solo tienes que
poner en el web.config los <authorization> que quieras con los <location
path=...> que te dé la gana, y tienes control completo sobre qué usuarios
pueden acceder a qué directorios y/o páginas.
Respuesta Responder a este mensaje
#2 Jose Fernandez
02/06/2005 - 17:24 | Informe spam
Siendo honesto se me cruzan los ojos leyendo la explicacion que me das...
pero, tengo dudas en algo.
yo tengo que tener dos login pages porque una es puramente administrativa
(nada que ver con el sitio como usuario, es como un subsitio dentro del
principal) y la otra es para los usuarios (con toda la interfaz bonita
propia del sitio). Ahora, la tabla administradores no tiene nada que ver con
la de usuarios en la database, por lo que una sola pagina de login no me
serviria pues son dos cosas muy diferentes loguear a un admin que a un
usuario. Cargo en session diferentes datos que no tienen que ver nada los de
usuario con los de administrador.
Realmente no tengo idea de como hacer. Buscare en internet a ver si hay algo
que se acerque a lo que busco. lo que se me ocurre es hacer una clase de
logueo y en el constructor pasarle un parametro si es admin o usuario y a
partir de ahi llamar los metodos.
Saludos

"A.Poblacion" wrote in
message news:
"Jose Fernandez" wrote in message
news:
Si lo que quieres es que en una carpeta entren solo ciertos usuarios y
en
la otra los administradores, lo que deberias hacer es utilizar roles, y en
el web config poner
<authorization>
<allow roles="Administradores" />
<deny roles="*" />
</authorization>
Esto permite entrar a los administradores y cerrar el paso a los demás.
Para que esto funcione, tienes que asignarle un rol al usuario durante
el
login. La forma de hacerlo es que en el login.aspx, en lugar de hacer el
FormsAuthentication.RedirectFromLoginPage que probablemente estás metiendo
ahora mismo, le creas directamente la cookie de autenticacion (new
FormsAuthenticationTicket(...)) y en el parámetro UserData le pones el rol
o
roles, la cifras (FormsAuthentication.Encrypt), creas la cookie, y saltas
a
la dirección original (FormsAuthentication.GetRedirectUrl). Después te vas
al global.asax y en el evento Authenticate_Request decodificas la cookie,
sacas los roles, creas un GenericPrincipal, y se lo asignas al
Context.User.
Asi a primera vista parece complicado, pero son solo unas pocas lineas de
código y una vez que las hayas puesto te vale para siempre. Solo tienes
que
poner en el web.config los <authorization> que quieras con los <location
path=...> que te dé la gana, y tienes control completo sobre qué usuarios
pueden acceder a qué directorios y/o páginas.




Yo tengo una carpeta a la cual nadie que no se haya logueado puede
entrar.
Esa carpeta es Admin
dentro de esa carpeta yo tengo un web.config con este codigo
<configuration>
<system.web>
<authorization>
<deny users="?" />
</authorization>
<globalization requestEncoding="UTF-8" responseEncoding="UTF-8" />
</system.web>
</configuration>

ahora bien. en el web.config general del sitio tengo este pedazo de
codigo
<authentication mode="Forms">
<forms name=".NACIONALES" loginUrl="Admin/login.aspx"
protection="All" timeout="60" />
</authentication>

Esto me permite que los usuarios que no esten registrados puedan entrar a
esa pagina de esa carpeta Admin exclusivamente para registrarse y asi


poder
tener acceso total a todas las paginas de Admin.

MI PREGUNTA

Yo ahora tengo una segunda carpeta que necesito proteger al igual pero
que
es para los usuarios, no para los administradores.
La Carpeta digamos se llama MiZona. Dentro pongo el mismo webconfig
protegiendola de usuarios no registrados.
Podria yo poner en el web.config general otra linea agregando la pagina
de
registro:

<authentication mode="Forms">
<forms name=".NACIONALES" loginUrl="Admin/login.aspx"
protection="All" timeout="60" />
<forms name=".NACIONALES" loginUrl="MiZona/login.aspx"
protection="All" timeout="60" />
</authentication>

De ser asi, se me ocurre que quizas para el sistema es lo mismo que
entren
por admin o mizona pues estarian en efectos de logueados OK. claro, se
podria resolver con una variable de session que identificaria que tipo de
usuario se registro para proteger el acceso a cada una de las carpetas.



Respuesta Responder a este mensaje
#3 Carlos Vergara
02/06/2005 - 17:31 | Informe spam
Estimados yo tengo un problema similar,

La diferencia es que al authentificarse el usuario acceden a un menu de
opciones donde debe aparecer activadas solo las opciones para el Rol, en
este caso Administrador, Usuarios Avanzados e Invidatos.

El menu se encuentra en un archivo XML y capa opción tiene <Roles> </Roles>
según corresponda.

y trato de habilitarlos o deshabilitarlos a través de Web.Config <allow
roles="Administradores" />
<deny roles="*" /> pero no da resultado.



No soy muy entendido en .NET aun pero creo que la solución va por ahí.

Amigos: S.O.S. Please

Saludos,
Carlos

"A.Poblacion" escribió en
el mensaje news:
"Jose Fernandez" wrote in message
news:
> Yo tengo una carpeta a la cual nadie que no se haya logueado puede


entrar.
> Esa carpeta es Admin
> dentro de esa carpeta yo tengo un web.config con este codigo
> <configuration>
> <system.web>
> <authorization>
> <deny users="?" />
> </authorization>
> <globalization requestEncoding="UTF-8" responseEncoding="UTF-8" />
> </system.web>
> </configuration>
>
> ahora bien. en el web.config general del sitio tengo este pedazo de


codigo
> <authentication mode="Forms">
> <forms name=".NACIONALES" loginUrl="Admin/login.aspx"
> protection="All" timeout="60" />
> </authentication>
>
> Esto me permite que los usuarios que no esten registrados puedan entrar


a
> esa pagina de esa carpeta Admin exclusivamente para registrarse y asi
poder
> tener acceso total a todas las paginas de Admin.
>
> MI PREGUNTA
>
> Yo ahora tengo una segunda carpeta que necesito proteger al igual pero


que
> es para los usuarios, no para los administradores.
> La Carpeta digamos se llama MiZona. Dentro pongo el mismo webconfig
> protegiendola de usuarios no registrados.
> Podria yo poner en el web.config general otra linea agregando la pagina


de
> registro:
>
> <authentication mode="Forms">
> <forms name=".NACIONALES" loginUrl="Admin/login.aspx"
> protection="All" timeout="60" />
> <forms name=".NACIONALES" loginUrl="MiZona/login.aspx"
> protection="All" timeout="60" />
> </authentication>
>
> De ser asi, se me ocurre que quizas para el sistema es lo mismo que


entren
> por admin o mizona pues estarian en efectos de logueados OK. claro, se
> podria resolver con una variable de session que identificaria que tipo


de
> usuario se registro para proteger el acceso a cada una de las carpetas.

Si lo que quieres es que en una carpeta entren solo ciertos usuarios y


en
la otra los administradores, lo que deberias hacer es utilizar roles, y en
el web config poner
<authorization>
<allow roles="Administradores" />
<deny roles="*" />
</authorization>
Esto permite entrar a los administradores y cerrar el paso a los demás.
Para que esto funcione, tienes que asignarle un rol al usuario durante


el
login. La forma de hacerlo es que en el login.aspx, en lugar de hacer el
FormsAuthentication.RedirectFromLoginPage que probablemente estás metiendo
ahora mismo, le creas directamente la cookie de autenticacion (new
FormsAuthenticationTicket(...)) y en el parámetro UserData le pones el rol


o
roles, la cifras (FormsAuthentication.Encrypt), creas la cookie, y saltas


a
la dirección original (FormsAuthentication.GetRedirectUrl). Después te vas
al global.asax y en el evento Authenticate_Request decodificas la cookie,
sacas los roles, creas un GenericPrincipal, y se lo asignas al


Context.User.
Asi a primera vista parece complicado, pero son solo unas pocas lineas de
código y una vez que las hayas puesto te vale para siempre. Solo tienes


que
poner en el web.config los <authorization> que quieras con los <location
path=...> que te dé la gana, y tienes control completo sobre qué usuarios
pueden acceder a qué directorios y/o páginas.



Respuesta Responder a este mensaje
#4 Jose Fernandez
02/06/2005 - 18:50 | Informe spam
Hw buscado en iternet y no he encontrado un solo caso donde se puedan usar
dos authentication forms en una aplicacion. Si es que no se puede, es una
pena que microsoft se le haya ido ese detalle pues es algo tan comun en un
sitio que se tengan multiples login forms que no creo posible que on se
pueda. En el antiguo asp se podia tener tantos login forms querias y
validacion era a traves de Sessions... pero ahora me han jodio la vida con
esta historia de un solo form.
alguien tiene un ejemplo o conociemientos que se puedan usar multiples
forms????
Desesperacion total.
Jose

"Carlos Vergara" wrote in message
news:%
Estimados yo tengo un problema similar,

La diferencia es que al authentificarse el usuario acceden a un menu de
opciones donde debe aparecer activadas solo las opciones para el Rol, en
este caso Administrador, Usuarios Avanzados e Invidatos.

El menu se encuentra en un archivo XML y capa opción tiene <Roles>
</Roles>
según corresponda.

y trato de habilitarlos o deshabilitarlos a través de Web.Config <allow
roles="Administradores" />
<deny roles="*" /> pero no da resultado.



No soy muy entendido en .NET aun pero creo que la solución va por ahí.

Amigos: S.O.S. Please

Saludos,
Carlos

"A.Poblacion" escribió en
el mensaje news:
"Jose Fernandez" wrote in message
news:
> Yo tengo una carpeta a la cual nadie que no se haya logueado puede


entrar.
> Esa carpeta es Admin
> dentro de esa carpeta yo tengo un web.config con este codigo
> <configuration>
> <system.web>
> <authorization>
> <deny users="?" />
> </authorization>
> <globalization requestEncoding="UTF-8" responseEncoding="UTF-8" />
> </system.web>
> </configuration>
>
> ahora bien. en el web.config general del sitio tengo este pedazo de


codigo
> <authentication mode="Forms">
> <forms name=".NACIONALES" loginUrl="Admin/login.aspx"
> protection="All" timeout="60" />
> </authentication>
>
> Esto me permite que los usuarios que no esten registrados puedan entrar


a
> esa pagina de esa carpeta Admin exclusivamente para registrarse y asi
poder
> tener acceso total a todas las paginas de Admin.
>
> MI PREGUNTA
>
> Yo ahora tengo una segunda carpeta que necesito proteger al igual pero


que
> es para los usuarios, no para los administradores.
> La Carpeta digamos se llama MiZona. Dentro pongo el mismo webconfig
> protegiendola de usuarios no registrados.
> Podria yo poner en el web.config general otra linea agregando la pagina


de
> registro:
>
> <authentication mode="Forms">
> <forms name=".NACIONALES" loginUrl="Admin/login.aspx"
> protection="All" timeout="60" />
> <forms name=".NACIONALES" loginUrl="MiZona/login.aspx"
> protection="All" timeout="60" />
> </authentication>
>
> De ser asi, se me ocurre que quizas para el sistema es lo mismo que


entren
> por admin o mizona pues estarian en efectos de logueados OK. claro, se
> podria resolver con una variable de session que identificaria que tipo


de
> usuario se registro para proteger el acceso a cada una de las carpetas.

Si lo que quieres es que en una carpeta entren solo ciertos usuarios y


en
la otra los administradores, lo que deberias hacer es utilizar roles, y
en
el web config poner
<authorization>
<allow roles="Administradores" />
<deny roles="*" />
</authorization>
Esto permite entrar a los administradores y cerrar el paso a los
demás.
Para que esto funcione, tienes que asignarle un rol al usuario durante


el
login. La forma de hacerlo es que en el login.aspx, en lugar de hacer el
FormsAuthentication.RedirectFromLoginPage que probablemente estás
metiendo
ahora mismo, le creas directamente la cookie de autenticacion (new
FormsAuthenticationTicket(...)) y en el parámetro UserData le pones el
rol


o
roles, la cifras (FormsAuthentication.Encrypt), creas la cookie, y saltas


a
la dirección original (FormsAuthentication.GetRedirectUrl). Después te
vas
al global.asax y en el evento Authenticate_Request decodificas la cookie,
sacas los roles, creas un GenericPrincipal, y se lo asignas al


Context.User.
Asi a primera vista parece complicado, pero son solo unas pocas lineas de
código y una vez que las hayas puesto te vale para siempre. Solo tienes


que
poner en el web.config los <authorization> que quieras con los <location
path=...> que te dé la gana, y tienes control completo sobre qué usuarios
pueden acceder a qué directorios y/o páginas.







Respuesta Responder a este mensaje
#5 A.Poblacion
03/06/2005 - 08:02 | Informe spam
"Jose Fernandez" wrote in message
news:
[...] En el antiguo asp se podia tener tantos login forms querias y
validacion era a traves de Sessions... pero ahora me han jodio la vida con
esta historia de un solo form.



Bueno, nada te impide hacer en .Net lo mismo que se hacía en asp: Al
principio de todos tus forms controlas que no esté vacía una variable del
Session que traiga el usuario, y si está vacía saltas al formulario de
login. De esta forma puedes tener todos los formularios que quieras.
Otra forma de conseguirlo, aprovechando el automatismo de .Net, es crear
una aplicación distinta por cada formulario de login que quieras tener.
Metes en un subdirectorio las páginas que tengan que usar ese login, pones
en el subdirectorio un web.config con la configuración de login, y desde la
herramienta de administración de IIS le das al botón "Crear" sobre las
propiedades de ese directorio para que se marque como origen de aplicación y
se procese ese web.config.
Otra forma más consiste en usar el automatismo normal de .Net, con un
solo formulario de login , pero en ese formulario comprobar por código desde
qué página se ha llegado a él (FormsAuthentication.GetRedirectUrl) y según
cuál sea la página hacer un Redirect a un formulario de login distinto.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida