2012-05-19 10 views
7

Estoy trabajando en un proyecto para ser utilizado en una empresa. El sistema tendrá solo 1 cuenta de administrador.cómo trabajar con el proyecto asp.net mvc que tiene un solo usuario

El administrador agregará usuarios del sistema y cada usuario puede crear sus propios contactos.

Creé un servicio WCF para conectarme con la base de datos, un proyecto asp.net mvc3 para administradores y otra aplicación WPF para usuarios del sistema.

Mi pregunta es:

tengo sólo un usuario (admin) para iniciar sesión con este proyecto asp.net mvc: ¿Cómo trabajo con esta situación?

Creo que el proveedor de membresía y la base de datos no son necesarios porque solo estoy trabajando con un usuario, ¿verdad?

+1

Obtendrá mejores respuestas si proporciona muestras de código. – robrich

+3

@robrich ¿por qué necesita el código para estas preguntas? – tito11

+0

¿por qué votar abajo? – tito11

Respuesta

8

Prueba esto:

web.config:

<authentication mode="Forms"> 
    <forms loginUrl="~/Admin/LogOn" timeout="2880" > 
    <credentials passwordFormat="SHA1"> 
     <user name="admin" password="5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8"/> 
    </credentials> 
    </forms> 
</authentication> 

formato de la contraseña se ajusta a SHA1, por lo que su contraseña no será visible en texto claro. Todavía puede ser descifrado. Genere su propio hash usando un generador SHA1 en línea, por ejemplo.

loginUrl es una ruta a su página de inicio de sesión (duh: P), así que cámbiela si es diferente.

CredentialsViewModel:

public class CredentialsViewModel 
{ 
    [Required] 
    public string UserName { get; set; } 

    [Required] 
    [DataType(DataType.Password)] 
    public string Password { get; set; } 
} 

Ver modelo para la vista de inicio de sesión.

AdminController:

public ViewResult LogOn() 
{ 
    return View(); 
} 

[HttpPost] 
public ActionResult LogOn(CredentialsViewModel model, string returnUrl) 
{ 
    if(ModelState.IsValid) 
    { 
     if(FormsAuthentication.Authenticate(model.UserName, model.Password)) 
     { 
      FormsAuthentication.SetAuthCookie(model.UserName, false); 
      return Redirect(returnUrl ?? Url.Action("Index", "Admin"));     
     } 
     else 
     { 
      ModelState.AddModelError("", "Incorrect username or password"); 
     } 
    } 

    return View(); 
} 

[Authorize] 
public ViewResult Index() 
{ 
    return View(); 
} 

Así acción de inicio de sesión será autenticar las credenciales que pasan de la vista; compáralo con datos de web.config.

Parte importante aquí es [Authorize] atributo que impedirá el acceso de usuarios no autorizados.

+0

Funciona muy bien para más de un usuario, siempre y cuando las credenciales de esos usuarios estén en piedra y no existan. demasiados ¡Gracias un montón! – ElliotSchmelliot

0

Definitivamente necesitará una tabla de usuario para manejar cuentas que no sean de administrador. Sería trivial agregar al usuario Admin también a esta tabla, y agregar una columna etiquetada como "IsAdmin", donde solo esa se establece en verdadero. Los proveedores de Membresía y Rol pueden hacerlo bien, y pueden ser más rápidos para construir lo que necesita, aunque tienden a barf en toda su base de datos.

.. como nota al margen, aunque usted está bastante seguro de que solo habrá una sola cuenta de administrador, sospecho que ese requisito cambiará eventualmente, y probablemente sin previo aviso.

Cuestiones relacionadas