Attualmente sto imparando MVC4 e sto seguendo il libro 4a edizione di Pro ASP NET MVC4 per creare un progetto di negozio sportivo.MVC 4 Autenticazione moduli non funzionante con [Autorizza]
Ho sempre sviluppato in Webform e sto cercando di capire come funziona l'autenticazione dei moduli in MVC4.
Ecco quello che ho raggiunto:
Web.Config
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="2880"/> </authentication>
AccountController login Azione:
[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 Provider:
public bool Authenticate(string username, string password) {
bool result = FormsAuthentication.Authenticate(username, password);
if (result)
{
FormsAuthentication.SetAuthCookie(username, false);
}
return result;
}
io pongo l'authCookie e ora vorrei sapere, come proteggere altri controller e azioni fuori dal AccountController
L'applicazione ha un controller chiamato AdminController , dove è possibile modificare i prodotti e la lista
prodotto con la seguente {regolatore/azione}
Admin/Indice
Quindi, se io non sono missunderstanding la teoria, se l'utente non sta registrando nel AccountController non dovrebbero essere in grado di chiamare le azioni con [Autorizza] tag sulla dichiarazione:
public class AdminController : Controller
{
private IProductRepository repository;
public AdminController(IProductRepository repo)
{
repository = repo;
}
[Authorize]
public ActionResult Index()
{
return View(repository.Products);
}
}
Il problema è che posso chiamare l'azione Index di Admin Controller senza alcun problema e senza introdurre il login.
Ho bisogno di una guida per capire come funziona. Ho fatto delle ricerche e non ho trovato nulla, e il libro non copre questo argomento.
Grazie in anticipo.
MODIFICA: ho chiuso il browser Chrome e ho lavorato senza modificare nulla. Stavo lavorando con le schede e immagino che il cookie fosse attivo anche durante l'arresto e l'avvio del debug.
quale versione di Visual Studio stai usando? 2010 o 2012? –