Я начал кодировать LoginModule для Nancy, но мне пришло в голову, что, возможно, мне нужно выполнить аутентификацию по-другому. Есть ли принятый способ сделать авторизацию в Нэнси? Сейчас я планирую два проекта: веб-сервис и сервис json. Мне понадобится auth для обоих.
Как я должен обрабатывать аутентификацию с помощью Nancy?
Ответ 1
Как пишет Стивен, Нэнси поддерживает базовые и формы auth из коробки. Посмотрите эти два демонстрационных приложения, чтобы посмотреть, как их выполнять: https://github.com/NancyFx/Nancy/tree/master/samples/Nancy.Demo.Authentication.Forms и https://github.com/NancyFx/Nancy/tree/master/samples/Nancy.Demo.Authentication.Basic
Из второго из этих демонстраций здесь находится модуль, который требует auth:
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];
};
}
}
}
и фрагмент bootstrapper, который устанавливает форму auth в конвейере запроса:
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);
}
Ответ 2
Я создал пример формы web-приложения с пользовательским управлением с Nancy для собственного обучения. Это на Github, если вы хотите поиграть с ним.