Para gente seria

22/06/2005 - 16:58 por marco | Informe spam
Perdon por insistir...
Hola a todos, gracias por leer este mensaje.

Notas:
La configuracion del IIS es con autenticacion anonima y windows (de otro
modo no puedo modificar, depurar, etc.) El Windows SBS 2003 no se puede
quitar porque es la licencia que trae el servidor. El sitio de Microsoft no
ofrece informacion sobre esta conducta. Libros ya tengo.

El problema:
He implementado la autenticacion por forms usando una pagina login.aspx y
funciona de maravilla en máquinas con Windows 2000 Pro, XP Pro SP2 y Windows
2003 Web Edition, pero en un servidor Small Business Server tiene una
conducta atípica, al intentar hacer login el usuario efectivamente queda
autenticado, pero permanece en la página de login.

El web.config contiene esto:
...
<authentication mode="Forms">
<forms name=".user" loginUrl="~/login.aspx" protection="All"
timeout="720" slidingExpiration="true" />
</authentication>

<authorization>
<deny users="?" />
<allow users="*" />
</authorization>
...

el login.aspx contiene esto al inicio:

Imports System.Diagnostics
Imports System.Data.SqlClient
Imports System.Web.Security

El boton para autenticar contiene esto (solo pongo la parte que corre cuando
el usuario es valido):
...

Private Sub btnSignin_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles btnSignin.Click
...
'//////////////////////////////////////////
' Generar un ticket de authenticacion
Dim tkt As FormsAuthenticationTicket
Dim cookiestr As String
Dim blnPersiste As Boolean = False
Dim intMinutos As Int16 = 30
Dim ck As HttpCookie

blnPersiste = True

tkt = New FormsAuthenticationTicket(1, _
user_id, _
DateTime.Now(), _
DateTime.Now.AddMinutes(intMinutos), _
blnPersiste, _
user_name)

cookiestr = FormsAuthentication.Encrypt(tkt)

ck = New HttpCookie( _
FormsAuthentication.FormsCookieName(),cookiestr)

If blnPersiste Then ck.Expires = tkt.Expiration

ck.Path = FormsAuthentication.FormsCookiePath()
Response.Cookies.Add(ck)

Dim strRedirect As String
strRedirect = Request("ReturnURL")
If strRedirect <> "" Then
Response.Redirect(strRedirect, True)
Else
strRedirect = "default.aspx"
Response.Redirect(strRedirect, True)
End If
'//////////////////////////////////////////
...

Comentarios: He sustituido las lineas Response.Redirect por Server.Transfer,
ya que las primeras envian a una página en blanco.

Suponiendo que la lógica del ASP.NET está bien, ya que funciona en otros
sistemas operativos, qué se debe configurar en el Small Business Server para
que funcione?

Mil gracias

Marco Padierna

Preguntas similare

Leer las respuestas

#1 Eduardo A. Morcillo [MS MVP VB]
23/06/2005 - 00:08 | Informe spam
¿Tienes algun codigo para el evento AuthenticateRequest en el global.asax?

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
Respuesta Responder a este mensaje
#2 Eduardo A. Morcillo [MS MVP VB]
24/06/2005 - 05:04 | Informe spam
Otra posibilidad, si estas usando SmartNavigation en la pagina prueba
deshabilitarlo.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
Respuesta Responder a este mensaje
#3 Pedro Luna Montalvo, [MVP VB.NET]
24/06/2005 - 16:50 | Informe spam
Has probado con hacer los Redirect, pero sin terminar el Response, es decir,
poniendo False la segundo parametro?.


Saludos,
Pedro Luna, [MVP VB.NET]
Gye, Ecu

"marco" <mpadierna h ot m_a.il dot c om> escribió en el mensaje
news:
Perdon por insistir...
Hola a todos, gracias por leer este mensaje.

Notas:
La configuracion del IIS es con autenticacion anonima y windows (de otro
modo no puedo modificar, depurar, etc.) El Windows SBS 2003 no se puede
quitar porque es la licencia que trae el servidor. El sitio de Microsoft
no
ofrece informacion sobre esta conducta. Libros ya tengo.

El problema:
He implementado la autenticacion por forms usando una pagina login.aspx y
funciona de maravilla en máquinas con Windows 2000 Pro, XP Pro SP2 y
Windows
2003 Web Edition, pero en un servidor Small Business Server tiene una
conducta atípica, al intentar hacer login el usuario efectivamente queda
autenticado, pero permanece en la página de login.

El web.config contiene esto:
...
<authentication mode="Forms">
<forms name=".user" loginUrl="~/login.aspx" protection="All"
timeout="720" slidingExpiration="true" />
</authentication>

<authorization>
<deny users="?" />
<allow users="*" />
</authorization>
...

el login.aspx contiene esto al inicio:

Imports System.Diagnostics
Imports System.Data.SqlClient
Imports System.Web.Security

El boton para autenticar contiene esto (solo pongo la parte que corre
cuando
el usuario es valido):
...

Private Sub btnSignin_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles btnSignin.Click
...
'//////////////////////////////////////////
' Generar un ticket de authenticacion
Dim tkt As FormsAuthenticationTicket
Dim cookiestr As String
Dim blnPersiste As Boolean = False
Dim intMinutos As Int16 = 30
Dim ck As HttpCookie

blnPersiste = True

tkt = New FormsAuthenticationTicket(1, _
user_id, _
DateTime.Now(), _
DateTime.Now.AddMinutes(intMinutos), _
blnPersiste, _
user_name)

cookiestr = FormsAuthentication.Encrypt(tkt)

ck = New HttpCookie( _
FormsAuthentication.FormsCookieName(),cookiestr)

If blnPersiste Then ck.Expires = tkt.Expiration

ck.Path = FormsAuthentication.FormsCookiePath()
Response.Cookies.Add(ck)

Dim strRedirect As String
strRedirect = Request("ReturnURL")
If strRedirect <> "" Then
Response.Redirect(strRedirect, True)
Else
strRedirect = "default.aspx"
Response.Redirect(strRedirect, True)
End If
'//////////////////////////////////////////
...

Comentarios: He sustituido las lineas Response.Redirect por
Server.Transfer,
ya que las primeras envian a una página en blanco.

Suponiendo que la lógica del ASP.NET está bien, ya que funciona en otros
sistemas operativos, qué se debe configurar en el Small Business Server
para
que funcione?

Mil gracias

Marco Padierna


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida