Я пытаюсь использовать OWIN для входа в систему с помощью простой простой аутентификации, но я не могу заставить ее работать вообще. Я чувствую, что я пропустил что-то очень простое, но, похоже, не могу понять. Я не нуждаюсь ни в чем, кроме сохранения адреса электронной почты человека и не желаю oauth, что, по-видимому, показывает большинство учебных пособий и образцов. Когда я запускаю приведенный ниже код, я никогда не подписываюсь и утверждения аутентификации всегда пусты, когда я смотрю в отладчике.OWIN простой логин не входит в систему
Моей Бритва веб-страница:
@using System.Security.Claims;
@{
Microsoft.Owin.IOwinContext ctx = Request.GetOwinContext();
var usr = Request["text1"];
if (IsPost && usr == "[email protected]")
{
ctx.Authentication.SignOut(Microsoft.AspNet.Identity.DefaultAuthenticationTypes.ApplicationCookie);
var claims = new List<Claim>();
claims.Add(new Claim(ClaimTypes.Email, usr));
claims.Add(new Claim(ClaimTypes.Name, var));
var id = new ClaimsIdentity(claims, Microsoft.AspNet.Identity.DefaultAuthenticationTypes.ApplicationCookie);
ctx.Authentication.SignIn(id);
//FormsAuthentication.SetAuthCookie("[email protected]", false); // Also fails
}
var IP = HttpContext.Current.User.Identity.IsAuthenticated.ToString();
var text = "[email protected]";
}
<!DOCTYPE html>
<html lang="en">
<head><title></title></head>
<body>
<p>Are we Logged in? <strong>@IP</strong>.</p>
<form action="" method="post">
<p>
<label for="text1">First Number:</label>
<input type="text" name="text1" value="@text" />
<p><input type="submit" value="Add" /></p>
</form>
</body>
</html>
с классом пускового
using Microsoft.AspNet.Identity;
using Microsoft.Owin;
using Microsoft.Owin.Security;
using Microsoft.Owin.Security.Cookies;
using Owin;
[assembly: OwinStartup(typeof(TypeScriptHTMLApp1.Startup1))]
namespace TypeScriptHTMLApp1
{
public class Startup1
{
public void Configuration(IAppBuilder app)
{
// For more information on how to configure your application, visit http://go.microsoft.com/fwlink/?LinkID=316888
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType =DefaultAuthenticationTypes.ApplicationCookie,
AuthenticationMode = AuthenticationMode.Passive,
});
}
}
}
Почему всегда возвращается ложью и как я могу сделать это успешно войти в системе?
Вы используете его локально? Вы используете его под SSL? Если вы не используете SSL, вы должны установить requireSsl = «false» в свой web.config (в файле system.identityModel.services - federationConfiguration - cookieHandler. В ответ вы должны увидеть некоторые файлы cookie после метода SignIn. t, это одна из возможных причин. –
Ага! Вот и все! У меня пока нет SSL, и я не требую, чтобы SSL исправил его. – byteit101