2. Agenda - MVC
●
●
●
●
●
●
●
●
●
●
●
ASP MVC 4 vs 5
Creación de Proyecto
NuGet Packages
Modelo de Datos con EF 6
Controladores
Vistas
Modelos y Validaciones
Filtros y Ruteo
Autenticación y Seguridad
Optimizaciones
Publicación
3. Tecnologías Web .NET
Multitud de tecnologías que llevan el nombre ASP.NET
pero diferentes apellidos: Web Forms, MVC, Web Pages, Web API y
SignalR.
4. ASP MVC 4 vs 5
●
Mejoras en autenticación
●
Katana (Implementacion Microsoft de OWIN)
●
Bootsrap 3
●
Entity Framework 6
●
Filter overrides
●
Routing basado en atributos
10. Modelos y Validaciones
●
Creación de Modelos
●
Asociación de modelos con vistas
●
Validaciones
○ Campos requeridos
■
○
Con expresiones regulares
■
○
[Required(ErrorMessage = "Campo requerido")]
[RegularExpression(@"^d{9}$", ErrorMessage = "El valor debe ser numérico y de
9 dígitos")]
Remotes:
■
[Remote("Action", "Controller", HttpMethod = "POST", ErrorMessage = "Error")]
14. rd
Autenticación y Seguridad - 3 part
public partial class Startup {
// App_Start/Startup.Auth.cs
publicvoid ConfigureAuth(IAppBuilder app) {
app.UseSignInCookies();
app.UseMicrosoftAccountAuthentication( clientId: "", clientSecret: "");
app.UseTwitterAuthentication( consumerKey: "", consumerSecret: "");
app.UseFacebookAuthentication( appId: "", appSecret: "");
app.UseGoogleAuthentication();
}
}
15. Autenticación y Seguridad - Facebook
Pasos:
●
Configure Authentication -> Individual User Accounts al crear proyecto
●
Crear Aplicación en Facebook
●
ConfigureAuth en App_StartStartup.Auth.cs
○ app.UseFacebookAuthentication(
appId: "000000000000000",
appSecret: "000000000000000");
dvdd
16. Autenticación y Seguridad - Filtro
Tipos de Filtros:
Los Filtros corren en este orden:
●
OnAuthorization
●
OnException
1.
Authorization filters
●
OnActionExecuting
2.
Action filters
●
OnActionExecuted
3.
Response filters
●
OnResultExecuting
4.
Exception filters
●
OnResultExecuted
17. Autenticación y Seguridad - Filtro
public class IsAjaxRequest : ActionFilterAttribute {
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (filterContext.HttpContext.Request.IsAjaxRequest())
{
return;
}
// it was a standard request
filterContext.Controller.TempData["ErrorMessage"] =
string.Format(“This is not AJAX”);
filterContext.Result = new RedirectResult("~/Error/AuthorizationError");
}
}
18. Optimizaciones
●
Reducción de Requests al servidor
●
Minimización de CSS y JS
○
○
●
BundleConfig.cs
<script src= "@BundleTable.Bundles.ResolveBundleUrl("~/mainJs", false)" type="
text/javascript"></script>
GZip
○
<httpCompression> en eeb.config