User987 User987 - 9 months ago 101
ASP.NET (C#) Question

The name 'DefaultAuthenticationTypes' does not exist in the current context

I'm trying to implement role-based authorization in my web application like following:

public ActionResult Login(LoginViewModel model)
if (ModelState.IsValid)
string userName = model.Username;
string[] userRoles = (string[])Session["UserRoles"];

ClaimsIdentity identity = new ClaimsIdentity(DefaultAuthenticationTypes.ApplicationCookie);

identity.AddClaim(new Claim(ClaimTypes.NameIdentifier, userName));

userRoles.ToList().ForEach((role) => identity.AddClaim(new Claim(ClaimTypes.Role, role)));

identity.AddClaim(new Claim(ClaimTypes.Name, userName));


return RedirectToAction("Success");
return View("Login",model);

I'm getting an error on two lines:

1.ClaimsIdentity identity = new ClaimsIdentity(DefaultAuthenticationTypes.ApplicationCookie);



The error 1:

the name 'DefaultAuthenticationTypes' does not exist in the current context

And error 2 is:

Authentication manager does not contains definition for SignIn

I was trying to find a solution how to implement this but I couldn't find anything related to the errors.

Answer Source

DefaultAuthenticationTypes is part of Identity framework and found in Microsoft.AspNet.Identity namespace.

To use it, add a using to the top of the file

using Microsoft.AspNet.Identity;
//...other code
identity = new ClaimsIdentity(DefaultAuthenticationTypes.ApplicationCookie);

or call it directly

identity = new ClaimsIdentity(Microsoft.AspNet.Identity.DefaultAuthenticationTypes.ApplicationCookie);

The second issue was already dealt with in another one of your questions here