MVC 4 Formes d'Authentification ne fonctionne pas avec [Autoriser]

Je suis en train d'apprendre MVC4 droit maintenant, et je suis le Pro ASP NET MVC4 4ème édition du livre pour créer un Magasin de Sports projet.

J'ai toujours développé dans les formulaires web, et je suis à essayer de comprendre comment les formes d'authentification est de travailler dans MVC4.

Voici ce que j'ai réalisé:

Web.Config

<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="2880"/>  </authentication>

AccountController Action login:

[HttpPost]
        public ActionResult Login(LoginViewModel model, string returnUrl)
        {
            if (ModelState.IsValid)
            {
                if (authProvider.Authenticate(model.UserName, model.Password))
                {
                    return Redirect(returnUrl ?? Url.Action("Index", "Admin"));
                }
                else
                {
                    ModelState.AddModelError("", "Incorrect username or password");
                    return View();
                }
            }
            else
            {
                return View();
            }
        }

Auth Fournisseur De:

public bool Authenticate(string username, string password) {
            bool result = FormsAuthentication.Authenticate(username, password);
            if (result)
            {
                FormsAuthentication.SetAuthCookie(username, false);
            }

            return result;

        }

Je suis en train de le AuthCookie et maintenant je voudrais savoir, comment protéger les autres contrôleurs
et les actions de la AccountController

L'application dispose d'un contrôleur appelé AdminController, où vous pouvez modifier les produits et l'
liste de produits en vertu de la suite {controller/action}

Admin/Index

Donc, Si je ne suis pas missunderstanding la théorie, si l'utilisateur ne se connecte pas dans le AccountController ils ne devraient pas être en mesure d'appeler les actions avec [Autoriser] balise
sur la déclaration:

 public class AdminController : Controller
    {
        private IProductRepository repository;


        public AdminController(IProductRepository repo)
        {
            repository = repo;
        }

       [Authorize]
        public ActionResult Index()
        {

            return View(repository.Products);
        }
   }

Le truc, c'est que je peux appeler l'action "Index" de l'Admin Contrôleur sans aucun problème et sans introduire de la connexion.

J'ai besoin de quelques conseils pour comprendre comment cela fonctionne. J'ai fait quelques recherches et ne pouvait pas trouver quoi que ce soit, et le livre n'est pas sur ce thème.

Merci d'avance.

EDIT: j'ai fermé le Navigateur google Chrome, et a travaillé sans rien changer. Je travaillais avec des onglets et je crois que le témoin a été actif, même à l'arrêt et le démarrage de débogage.

ce que Visual Studio version utilisez-vous? 2010 ou 2012?

OriginalL'auteur Carlos Landeras | 2013-05-21