Que tal amigos de altNet
Estoy con un problemita, tengo que pasar el usuario y el password a una clase que está en la carpeta Models. Tengo el siguiente código de login en el controlador SecurityController
[AllowAnonymous]
[HttpPost]
public ActionResult Login(LoginModel login) {
IngresConnectionStringBuilder sb = new IngresConnectionStringBuilder();
sb["Server"] = "10.0.10.25";
sb["Database"] = "xxxx";
sb["User ID"] = login.UserName;
sb["Password"] = login.Password;
bool usuarioValido = false;
try {
using (IngresConnection ingresConeccion = new IngresConnection(sb.ConnectionString)) {
ingresConeccion.Open();
usuarioValido = true;
}
}
catch { }
if (ModelState.IsValid) {
if (usuarioValido) {
FormsAuthentication.SetAuthCookie(login.UserName, login.RememberMe);
Session.Add("UserName", login.UserName);
Session.Add("PassWord", login.Password);
this.crearRoles();
return RedirectToAction("Index", "Listado");
}
// Si llegamos a este punto, es que se ha producido un error y volvemos a mostrar el formulario
ModelState.AddModelError("", "El nombre de usuario o la contraseña especificados son incorrectos.");
}
return View(login);
}
Esas variables de sesión UserName y PassWord quiero utilizarlos en la clase ListadoModels
Algo así como:
namespace Cobranzas.Models
{
public class ListadoModels
{
public static InfoLogin infoLogin;
public ListadoModels() {
ListadoModels.infoLogin = new InfoLogin { password = Session["PassWord"], user = Session["UserName"]};
}
}
}
Aquí es donde no sé qué hacer porque generalmente haciendo Click con el botón derecho sobre la palabra Session, me sugería la dependencia para el Using.
¿Alguna sugerencia o material donde muestre como poder usar las variables de sesión en un Modelo?
Desde ya gracias.
Atte.
Nestor
--
Has recibido este mensaje porque estás suscrito al grupo "AltNet-Hispano" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a altnet-hispan...@googlegroups.com.
Para publicar una entrada en este grupo, envía un correo electrónico a altnet-...@googlegroups.com.
Visita este grupo en http://groups.google.com/group/altnet-hispano?hl=es.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.
En primer lugar gracias por responderme.
Lo que pasa es que tengo que pasarle el usuario y el password a una librería atreves de la clase ListadoModels y la base de datos está en Ingres que corre sobre un Linux, y otra cosa no menos cierta es que soy un principiante en esto del MVC, de hecho vengo de PHP (estructurado jeje).
Pero voy a probar así como me lo dices.
De nuevo gracias.
Atte.
Néstor
--
Has recibido este mensaje porque estás suscrito al grupo "AltNet-Hispano" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a altnet-hispan...@googlegroups.com.
Para publicar una entrada en este grupo, envía un correo electrónico a altnet-...@googlegroups.com.
Visita este grupo en http://groups.google.com/group/altnet-hispano?hl=es.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.
Que tal Walter
De que tengo caminos (Muchos todavía en .NET) que recorrer de eso no hay duda, pero por el camino se hace bueyes, estos son mis primeros pasos.
Y dime, por favor, que libro de .NET me recomiendas y si es en español MEJOR JEJE.
Y gracias por contestarme, y nada que ver, no lo tomo a mal, es más, me alegra saber que hay gente que sabe MUUUCHO más que yo, que tiene el tiempo y las ganas de responderme, aunque algunas veces incluso haga preguntas casi rayando en la más horrible ignorancia, ESO NO TIENE PRECIO, la verdad.
A decir verdad si no fuera por este foro, hace rato me dejaba de .NET MVC y me volvía a mi PHP (estructurado) querido jejeje.
Atte.
Néstor
De: altnet-...@googlegroups.com [mailto:altnet-...@googlegroups.com] En nombre de Walter Poch
Enviado el: jueves, 07 de marzo de 2013 15:55
Para: altnet-...@googlegroups.com
Autenticarte por la base de datos, ¿No es una buena práctica?
Bueno, la otra manera que veo es hacer una tabla y usar esa tabla para autenticar los usuarios, sin embargo, si hago eso, tengo que usar un súper usuario que tenga permisos para todas las tablas y acceder por ese usuario.
Si uso la autenticación de la base de datos, los usuarios solo tienen acceso a la tablas que le competen, eso me pareció mejor, pero bueno, ¿me podrías decir porque no es una buena práctica?.
Desde ya gracias.
Atte.
Néstor
De: altnet-...@googlegroups.com [mailto:altnet-...@googlegroups.com] En nombre de José F. Romaniello
Enviado el: jueves, 07 de marzo de 2013 16:05
Para: AltNet-Hispano
Asunto: Re: [altnet-hispano] Re: Como pasar variables de seccion a un Models
Ademas de lo que dijo Walter, esto que estas haciendo me parece que no es una buena práctica, por lo que entiendo de tu código me parece que estas utilizando los usuarios de tu DBMS para autenticar usuarios en una aplicación web.
public class ListadoModels(DatosUsuario datosDelUsuario)
{
public static InfoLogin infoLogin;
public ListadoModels() {
ListadoModels.infoLogin = new InfoLogin { password = datosDelUsuario.password, user = datosDelUsuario.userName};
}
}
Añadiendo mi granito de arena a los consejos de los compañeros, te recomiendo que no utilices esta forma de interacción con las variables de sesión: Session.Add("UserName", login.UserName); Si no que hagas una propiedad, en donde pueda utilizar un patrón nonull y, desde un solo punto, realizar las operaciones contra la sesión, o contra un viewsate o contra lo que quieras.
Por ejemplo, primero creo la clase (en la capa de entidades o en el modelo) que voy a persistir:
Public class DatosUsuario{public string userName {get; set;}
}
Por otra parte, el fondo de tu pregunta parte de una práctica que me parece erronea, que es el utilizar variables globales. Haciendo eso, la primera vez es muy cómodo, pero tarde o temprano la complejidad del uso de esa sesión y su manipulación te van a causar problemas de resultados inesperados.Yo te aconsejaría pasar los datos por el constructor de la clase, y así tienes control total de lo que envías y lo que recibes:
public class ListadoModels
{
public static InfoLogin infoLogin;
public ListadoModels() {
ListadoModels.infoLogin = new InfoLogin { password = datosDelUsuario.password, user = datosDelUsuario.userName};
}
}
--
1. ) Si la app q estas armando es una app enterprise, entonces usaria Active Directory u otra cosa que la empresa ya tenga.2. ) Si la app esta orientada a "Small Business", usaria Google Apps u Office 365.3.) Si la app es mas orientada a consumidores, usaria LiveID, GMail, Facebook, Twitter, etc.
Objetivo: reutilización, no reinventar la rueda
--