2011-03-31 14 views
9

Estoy creando un sitio web (fútbol, ​​fútbol) en ASP.NET MVC3 y quiero tener usuarios (con información adicional, luego usuario en membresía predeterminada, estos son visitantes ordinarios) y jugadores que creo que es mejor thet ellos heredarían usuarios y tendrían alguna información adicional como número de vestimenta, ... Los jugadores también podrían publicar artículos, los usuarios solo pueden comentar artículos. ¿Cuál es la mejor manera de hacer esto? ¿Debo usar el proveedor de membresía predeterminado o debo hacer las mías o usar algunas soluciones de terceros? ¿Y puede publicar algunos artículos y tutoriales para cambiar el proveedor o artículo original por crear su propio proveedor de asp.net MVC3? ¿O es lo mismo que MVC2?Membresía personalizada o no

Respuesta

5

Es muy fácil crear su propio proveedor de membresía. Simplemente crea una clase derivada de MembershipProvider. E implemente miembros que examinen DB, por ejemplo (o cualquier otra fuente de datos).

public class YourMembershipClass: MembershipProvider 
{ 
    public override bool ValidateUser(string username, string password) 
    { 
     return YourDataLayer.ValidateUser(username, password); 
    } 
    public override MembershipUser GetUser(object providerUserKey, bool userIsOnline) 
    { 
     return YourDataLayer.GetSpecificUser(providerUserKey, userIsOnline); 
    } 
    // Implement the other methods as well 
} 

A continuación, añadir sus YourMembershipClass a web.config:

<membership defaultProvider="MlgMembership"> 
    <providers> 
    <clear /> 
    <add name="CustomMembership" type="YourMembershipClass" enablePasswordRetrieval="false" />  
    </providers> 
</membership> 
1

Eche un vistazo a este soccer Club Site asp.net starter kit.

0

Aconsejo implementar su propio proveedor de membresía, significa implementar solo los bits que necesita y forma una base para toda su administración de usuarios.

El proveedor de Membresía es el mismo para WebForms y MVC, hay bastantes ejemplos en SO y Google.

2

Si usted está buscando para almacenar información de tipo de perfil, por ejemplo, nombre, apellido, título del trabajo, etc., contra cada usuario, entonces usted debería poder usar el sistema Profile integrado en la Membresía ASP.NET. Si está buscando almacenar más información relacionada con la identidad, entonces sí, tendrá que crear algún tipo de proveedor de membresía personalizado. Hay un buen video sobre cómo crear un proveedor personalizado en el sitio web ASP.NET: http://www.asp.net/general/videos/how-do-i-create-a-custom-membership-provider

En cuanto a permitir que diferentes tipos de usuarios realicen diferentes acciones, puede usar el sistema Roles integrado en la Membresía ASP.NET. Puede indicar a sus métodos de acción que solo permitan llamadas de usuarios en ciertos roles. Por ejemplo, si tiene un método de acción PostArticle y sólo quería jugadores para poder acceder a él tendría algo como esto:

[Authorize(Roles="Player")] 
public ActionResult PostArtcile(){ 
    return View(); 
} 

El atributo Authorize dice MVC sólo para permitir a los usuarios autenticados en el papel del "jugador" para llamar al método de acción. Aún deberá restringir la disponibilidad de un enlace para publicar un artículo en su interfaz, pero existen varias formas de hacerlo.

Hay una gran serie de artículos escritos por Scott Mitchell, que cubre toda la membresía cosas en base: http://www.4guysfromrolla.com/articles/120705-1.aspx

1

que recomendamos que:

  • proveedor de

    usar la pertenencia a simplemente tratar con registro de usuarios y autenticación. Y dejar que tome el cuidado de telas de seguridad de usuario (contraseña resto, validar usuario ....)

  • A continuación, utilizar los roles de separar sus usuarios a sus funciones ("Los jugadores, normalUsers, ..").

  • Y NUNCA uso proveedor de perfil causa que costó tantos tráfico que no desea y en lugar de que usted podría hacer su tabla personalizada en la base de datos para almacenar la información de adicional.

  • Luego puede usar EF o cualquier ORM para obtener esta información siempre que lo desee.

  • No olvide utilizar los atributos de autorización [Authorize(Roles="Players")] en sus Controladores y Acciones dependiendo de las Funciones.
Cuestiones relacionadas