2010-09-15 27 views
7

Estoy creando mi propio sitio web y blog y quiero por primera vez sólo yo en la base de datos (mi nombre y contraseña) y quizás más tarde algún registro para otros pero primero inicie sesión solo para mí y administración con autorización. No quiero usar Membresía de MS. Quiero intentar crear el mío desde el principio, así que estoy buscando una guía para principiantes, pero encontré grandes guías con roles, derechos. Solo quiero un pequeño ejemplo con el nombre de usuario de verificación, la contraseña en la base de datos con datos de inicio de sesión. Gracias por la ayuda Libormembresía personalizada de ASP.NET MVC para principiantes

+0

Hola, ¿ya ha elegido una manera de ir a la base de datos? (Entidad framework, linq2sql, ado.net?) – Michel

Respuesta

5

Incluso si usted no desea utilizar el almacén de datos del proveedor de pertenencia y el papel todavía se puede utilizar la autenticación. Créeme, es mucho más fácil que construir el tuyo. Así es como funciona:

Diremos que ya tiene su configuración de almacenamiento de usuario para recuperar el nombre de usuario y su contraseña. En aras de la simplicidad, pretenderé que tiene una clase estática llamada DataLayer que contiene sus métodos de recuperación de datos para extraer información de la base de datos (o del almacenamiento que use).

Primero necesita una forma de que el usuario inicie sesión. Configure una página con campos de nombre de usuario y contraseña. Luego, en el método de acción que los postes página para configurar una rápida sentencia if:

if (DataLayer.UserExists(userModel.Username)) 
    { 
     User userFromDB = DataLayer.GetUser(userModel.Username); 
     if (userFromDB.Password == userModel.Password) 
     { 
       FormsAuthentication.SetAuthCookie(userFromDB.Username, checkBoxRememberMe.Checked); 
       //Use userFromDB as the username to authenticate because it will 
       //preserve capitalization of their username the way they entered it 
       //into the database; that way, if they registered as "Bob" but they 
       //type in "bob" in the login field, they will still be authenticated 
       //as "Bob" so their comments on your blogs will show their name 
       //the way they intended it to. 

       return "Successfully logged in!"; 
     } 
    } 

    return "Invalid username or password."; 

Ahora que se autentican sólo puede utilizar Page.User.Identity.IsAuthenticated en el código para averiguar si se registran en este aspecto:.

if (User.Identity.IsAuthenticated) 
{ 
    DataLayer.PostBlogComment(User.Identity.Name, commentBody); 
    //Then in your controller that renders blog comments you would obviously 
    //have some logic to get the user from storage by the username, then pull 
    //their avatar and any other useful information to display along side the 
    //blog comment. This is just an example. 
} 

Además, puede bloquear a cabo los métodos de acción enteras o incluso controladores integrales a los usuarios que se autentican a través del proveedor de autenticación de formularios. Todo lo que tiene que hacer es añadir etiquetas como éstas a sus métodos de acción/controladores:

[Authorize] 
public ActionResult SomeActionMethod() 
{ 
    return View(); 
} 

El atributo [Authorize] evitará que los usuarios que no han iniciado sesión en el acceso a ese método de acción y volverá a dirigir a su página de inicio de sesión. Puede usar este mismo atributo para filtrar las funciones si está utilizando el proveedor de roles integrado.

[Authorize(Roles="Admin, SalesReps")] 
public ActionResult SomeActionMethod() 
{ 
    return View(); 
} 

Estos atributos también se pueden añadir por encima de la clase controlador de aplicar es lógica para todo el controlador.

EDIT: Para registrar un usuario todo lo que necesita hacer es llamar a FormsAuthentication.SignOut();

1

Hola @Bibo, bueno para no elegir los proveedores de Membresía. Creo que un UserService o similar que proporcione métodos para crear, autenticar usuarios y algunos pocos métodos más debería ser suficiente. Como sugerencia, use el uso de contraseñas y una contraseña para la contraseña del usuario. Here es un buen enlace para mirar. También eche un vistazo a this answer que di hace algún tiempo.

¡Buena suerte!

EDIT: El parámetro rememberMe se debe llamar keepMeSignedIn en su lugar.

+0

Gracias por igual pero no puedo encontrar nada que me pueda ayudar. ¿Puedes vincular algún artículo sobre eso? –

+1

CodeCampServer http://codecampserver.codeplex.com/ es una aplicación de muestra que implementa lo que estás buscando. – uvita

1

Este artículo sobre autenticación de formularios le ofrece mucha información para crear su propio sistema de seguridad simple, especialmente el bit sobre FormsAuthenticationTicket.

http://support.microsoft.com/kb/301240

Cuestiones relacionadas