c# - iuseridentity - ¿Cómo debo manejar la autenticación con Nancy?
nancyfx post example (2)
Creé una aplicación web de formularios de autorización de ejemplo con gestión de usuarios con Nancy para mi propio aprendizaje. Está en Github aquí si quieres jugar con él.
Comencé a codificar un LoginModule para Nancy, pero se me ocurrió que posiblemente necesitaba realizar la autenticación de una forma diferente. ¿Hay una forma aceptada de hacer autenticación en Nancy? Estoy planeando dos proyectos en este momento: web y json service. Necesitaré autenticación para ambos.
Mientras Steven escribe, Nancy admite la autenticación básica y de forma fuera de la caja. Eche un vistazo a estas dos aplicaciones de demostración para ver cómo hacer cada una: https://github.com/NancyFx/Nancy/tree/master/samples/Nancy.Demo.Authentication.Forms y https://github.com/NancyFx/Nancy/tree/master/samples/Nancy.Demo.Authentication.Basic
Desde la segunda de esas demostraciones aquí hay un módulo que requiere autenticación:
namespace Nancy.Demo.Authentication.Forms
{
using Nancy;
using Nancy.Demo.Authentication.Forms.Models;
using Nancy.Security;
public class SecureModule : NancyModule
{
public SecureModule() : base("/secure")
{
this.RequiresAuthentication();
Get["/"] = x => {
var model = new UserModel(Context.CurrentUser.UserName);
return View["secure.cshtml", model];
};
}
}
}
y un fragmento de bootstrapper que configura la autenticación de formularios en el canal de solicitud:
protected override void RequestStartup(TinyIoCContainer requestContainer, IPipelines pipelines, NancyContext context)
{
// At request startup we modify the request pipelines to
// include forms authentication - passing in our now request
// scoped user name mapper.
//
// The pipelines passed in here are specific to this request,
// so we can add/remove/update items in them as we please.
var formsAuthConfiguration =
new FormsAuthenticationConfiguration()
{
RedirectUrl = "~/login",
UserMapper = requestContainer.Resolve<IUserMapper>(),
};
FormsAuthentication.Enable(pipelines, formsAuthConfiguration);
}