2011-02-22 14 views
6

En la primera ejecución de mi mvc "hello world", obtengo un par de botones; inicio, sobre e inicio de sesión Si creo una cuenta de usuario en el inicio de sesión, ¿dónde se almacenan los datos? ¿Es lo suficientemente seguro como para dejarlo tal como está cuando llegue el momento de desarrollar mi aplicación o debería ir a una base de datos (si no lo está)?¿Dónde se almacenan los datos de los usuarios en el sistema de cuentas que viene con asp.net mvc framework?

Gracias por su tiempo.

Respuesta

4

Sí, está almacenado en una base de datos. La base de datos está en la carpeta App_Code bajo el nombre de ASPNETDB.MDF. Puede configurarlo en su archivo web.config.

¿Es seguro? Bueno, en mi humilde opinión, lo es. Pero realmente no me gusta este enfoque, prefiero diseñar mi propio servicio de autenticación y tener un control total sobre él. Si va a seguir con este método, debe leer más acerca de ASP.NET Membership Provider with Forms Authentication.

1

Si crea un defecto ASP.NET MVC 3 aplicación y mirar el int el web.config, verá:

<add name="ApplicationServices" 
    connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" 
    providerName="System.Data.SqlClient" /> 

Y

<membership> 
    <providers> 
    <clear/> 
    <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices" 
     enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" 
     maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" 
     applicationName="/" /> 
    </providers> 
</membership> 

Esto parece intentará conectarse a una instancia local de SQL Server Express y cargue aspnetdb.mdf desde la carpeta de datos de la aplicación. La clave membership.providers hace referencia a System.Web.Security.SqlMembershipProvider y hace referencia a la conexión ApplicationServices.

+1

¿Qué demonios es con el -1? Fui el primero en publicar citas web.config, y es la misma respuesta extraña que todos los demás dieron. –

11

ASP.Net MVC y WebForms comparten muchos de los mismos componentes, incluido el almacenamiento de miembros, la autenticación y la autorización. Estos componentes se utilizan en miles de sitios públicos en Internet.

membresía

La plantilla ASP.Net MVC predeterminada utiliza el mismo SqlMembershipProvider como formularios Web para almacenar información de pertenencia. Si busca en el archivo web.config, verá la sección de configuración debajo del elemento <membership/>, se verá así;

<membership> 
    <providers> 
    <clear/> 
    <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices" 
     enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" 
     maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" 
     applicationName="/" /> 
    </providers> 
</membership> 

Se hace referencia a la cadena de conexión llamado ApplicationServices donde se puede encontrar definido en la parte superior del archivo de configuración:

<connectionStrings> 
    <add name="ApplicationServices" 
     connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" 
     providerName="System.Data.SqlClient" /> 
    </connectionStrings> 

Esto monta el archivo aspnet.mdf encontrado en el directorio de la aplicación App_Data utilizando una instalación local instancia de Microsoft Sql Server Express.

Puede convertir fácilmente esto a SQL Server completo copiando el archivo MDB en su servidor SQL, montándolo y actualizando la cadena de conexión.

autenticación

autenticación está de nuevo a cargo de la misma clase FormsAuthentication utilizado para formularios Web, también se configura en el archivo web.config:

<authentication mode="Forms"> 
    <forms loginUrl="~/Account/LogOn" timeout="2880" /> 
</authentication> 

Autorización

El valor por defecto la plantilla también tiene entradas de configuración para SqlRoleProvider y WindowsTokenRoleProvider que h se puede usar para almacenar y recuperar roles para sus usuarios desde la base de datos o ActiveDirectory, respectivamente. Los administradores de roles están configurados en el elemento <roleManager/>.

<roleManager enabled="false"> 
    <providers> 
    <clear/> 
    <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/" /> 
    <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" /> 
    </providers> 
</roleManager> 

Los roles se desactivarán de forma predeterminada, puede habilitar el soporte para papeles cambiando el atributo enabled del elemento de roleManagerfalse a true.

Una vez que haya configurado los roles, puede utilizar ASP.Net authorization elementos para controlar el acceso a los recursos en su sitio. También puede usar Authorize attributes en sus controladores y/o acciones para un control de acceso más detallado. Usted no tiene tiene para usar roles de autorización, los nombres de usuario funcionan bien, pero al hacerlo facilitará la administración de la autorización.

Seguridad

Todos estos módulos están escritos utilizando las mejores prácticas aceptadas de la industria de seguridad. Authentication es manejada por IIS, que puede usar Digest o Windows Integrated Auth, ambos métodos seguros; debido a la compatibilidad con el navegador, cualquier cosa que escribas tú también estará restringida a estos métodos.

Las contraseñas se almacenan en la base de datos hash con una sal de hacer ataques de fuerza bruta con métodos tales como tablas de arco iris mucho más difícil. Los proveedores también son compatibles con la complejidad de las contraseñas y el vencimiento fuera de la caja.

Los tokens de autenticación se cifran de forma segura con una clave específica de la máquina y se firman con un MAC para garantizar que no se hayan alterado, solo entonces se almacenan en una cookie del lado del cliente.

Comprobabilidad

A pesar de que la seguridad es bastante estándar, una énfasis que los defensores de MVC, que animan a estos componentes no hacen simple, es la prueba. Sin embargo, este problema se puede solucionar de forma bastante sencilla con algunas interfaces estratégicamente ubicadas, un par de clases de fachada y alguna inyección de dependencia (que ahora es compatible con MVC3 por defecto).

-1

la base de datos se crea aoutomatically por asp.net. esta característica usa la función de membresía de asp.net build. primero debe mirarlo: http://msdn.microsoft.com/en-us/library/yh26yfzy.aspx

y también mirar la carpeta de modelos, verá el modelo de cuenta allí. y mira la carpeta del controlador. allí, usted contabilizará el controlador. revisa el código y lo resolverás.

3

estoy tomando la respuesta al siguiente paso lógico: OK, así que sé que está en ASPNETDB.MDF, así que ¿cómo puedo navegar por la mesa? (al menos era mi siguiente pregunta lógica)

Aquí es un buen enlace: http://learningsqlserver.wordpress.com/2011/02/13/how-can-i-open-mdf-and-ldf-files-in-sql-server-attach-tutorial-troublshooting/

Esencialmente:

  • Ejecutar SQL Server Management Studio (acceso directo del menú bajo "Microsoft SQL servidor #### ")
  • Conecte el Explorador de objetos a su servidor SQLEXPRESS
  • Haga clic con el botón derecho en Bases de datos y elija A ttach ...
  • Busque en su archivo MDF
Cuestiones relacionadas