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

11,856

Solution 1

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

Solution 2

For the first, it is just a constant string

If you do not want to install packages the quickest ( and not very orthodox ) solution is

ClaimsIdentity identity = new ClaimsIdentity("ApplicationCookie");

you can see definition here

Share:
11,856
User987
Author by

User987

Updated on July 19, 2022

Comments

  • User987
    User987 over 1 year

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

    [HttpPost]
    [ActionName("Login")]
    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));
    
            AuthenticationManager.SignIn(identity);
    
            return RedirectToAction("Success");
        }
        else
        {
            return View("Login",model);
        }
    }
    

    I'm getting an error on two lines:

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

    And:

    2.AuthenticationManager.SignIn(identity);
    

    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.