using System; using System.Security.Claims; using System.Threading.Tasks; using System.Web; using Microsoft.AspNet.Identity; using Microsoft.AspNet.Identity.EntityFramework; using Microsoft.AspNet.Identity.Owin; using Microsoft.Owin.Security; using WebFormApp.Models; namespace WebFormApp.Models { // Sie können Benutzerdaten für den Benutzer hinzufügen, indem Sie der User-Klasse weitere Eigenschaften hinzufügen. Weitere Informationen finden Sie unter https://go.microsoft.com/fwlink/?LinkID=317594. public class ApplicationUser : IdentityUser { public ClaimsIdentity GenerateUserIdentity(ApplicationUserManager manager) { // Beachten Sie, dass der "authenticationType" mit dem in "CookieAuthenticationOptions.AuthenticationType" definierten Typ übereinstimmen muss. var userIdentity = manager.CreateIdentity(this, DefaultAuthenticationTypes.ApplicationCookie); // Benutzerdefinierte Benutzeransprüche hier hinzufügen return userIdentity; } public Task GenerateUserIdentityAsync(ApplicationUserManager manager) { return Task.FromResult(GenerateUserIdentity(manager)); } } public class ApplicationDbContext : IdentityDbContext { public ApplicationDbContext() : base("DefaultConnection", throwIfV1Schema: false) { } public static ApplicationDbContext Create() { return new ApplicationDbContext(); } } } #region Hilfsprogramme namespace WebFormApp { public static class IdentityHelper { // Wird für XSRF beim Verknüpfen externer Anmeldungen verwendet. public const string XsrfKey = "XsrfId"; public const string ProviderNameKey = "providerName"; public static string GetProviderNameFromRequest(HttpRequest request) { return request.QueryString[ProviderNameKey]; } public const string CodeKey = "code"; public static string GetCodeFromRequest(HttpRequest request) { return request.QueryString[CodeKey]; } public const string UserIdKey = "userId"; public static string GetUserIdFromRequest(HttpRequest request) { return HttpUtility.UrlDecode(request.QueryString[UserIdKey]); } public static string GetResetPasswordRedirectUrl(string code, HttpRequest request) { var absoluteUri = "/Account/ResetPassword?" + CodeKey + "=" + HttpUtility.UrlEncode(code); return new Uri(request.Url, absoluteUri).AbsoluteUri.ToString(); } public static string GetUserConfirmationRedirectUrl(string code, string userId, HttpRequest request) { var absoluteUri = "/Account/Confirm?" + CodeKey + "=" + HttpUtility.UrlEncode(code) + "&" + UserIdKey + "=" + HttpUtility.UrlEncode(userId); return new Uri(request.Url, absoluteUri).AbsoluteUri.ToString(); } private static bool IsLocalUrl(string url) { return !string.IsNullOrEmpty(url) && ((url[0] == '/' && (url.Length == 1 || (url[1] != '/' && url[1] != '\\'))) || (url.Length > 1 && url[0] == '~' && url[1] == '/')); } public static void RedirectToReturnUrl(string returnUrl, HttpResponse response) { if (!String.IsNullOrEmpty(returnUrl) && IsLocalUrl(returnUrl)) { response.Redirect(returnUrl); } else { response.Redirect("~/"); } } } } #endregion