Я работаю над написанием простой страницы входа + чата для SignalR для моего сайта с vNext beta8
. К сожалению, мне очень сложно понять, как работают утверждения и аутентификация.Context.User всегда null с базовой аутентификацией в ASP.NET vNext
Все, что я пытаюсь сделать, это аутентифицировать пользователя и установить Context.User
на их личность, поэтому к нему можно получить доступ в SignalR. Так как у меня есть это сейчас, то Context.User
везде нулевое, поэтому SignalR даже не является мясом этого вопроса.
Вот соответствующие биты кода для этой проблемы:
Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddSession();
services.AddCaching();
services.AddSignalR();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseStaticFiles();
app.UseSession();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller}/{action}/{id?}",
defaults: new { controller = "Home", action = "Index" });
});
app.UseSignalR();
}
Войти метод управления Web API со значениями по умолчанию при условии, прыгая пароля/проверки подлинности и настройки сеанс, который работает. LoginUserInfo
лишь небольшой класс, чтобы получить имя пользователя/пароль для входа в систему
[HttpPost]
public string Login(LoginUserInfo info)
{
kUser user = new kUser();
user.Name = "Test user";
//This is where I am completely missing the point of something
Context.User = new ClaimsPrincipal(user);
}
KUser. - этот класс является неполным, я предполагаю, что AuthenticationType
и IsAuthenticated
не приходят в аффект здесь, так как исключение никогда не выбрасывается.
[Serializable]
public class kUser : IIdentity
{
public ObjectId Id { get; set; }
public string Name { get; set; }
public string AuthenticationType
{
get { return "MongoDB"; }
}
public bool IsAuthenticated
{
get
{
//If ID exists in database
throw new NotImplementedException();
}
}
}
Исследование приводит меня к разным для выполнения установки Context.User
и с ее доступной по всему приложению. Некоторые руководства указывают на FormsAuthentication
, который, похоже, не существует в ASP.NET 5, некоторые говорят о настройке идентификаторов пользователей для каждого потока и некоторые детали, как написать весь поставщик услуг для аутентификации.
Все, что я хочу, - это чрезвычайно простая процедура входа в систему - не помню стильные куки-файлы, ничего необычного. Просто введите имя пользователя/пароль, и сервер запоминает вас для вашей сессии. Где я ошибаюсь, и чего мне не хватает?
Это прекрасно работает, и большое спасибо за пример! – Scott
Просто для использования в будущем, 'Context.Authentication.SignIn' был заменен на' Context.Authentication.SignInAsync', но он используется так же, как этот пример. – Scott
Правда, я не проверил код с последней версией. – Anuraj