我正在學習MVC4,並且我正在遵循Pro ASP NET MVC4第4版書籍來創建體育商店項目。MVC 4表單身份驗證不與[授權]一起使用
我一直在webforms中開發,我想弄清楚表單身份驗證如何在MVC4中工作。
這是我所取得的成就:
的Web.Config
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="2880"/> </authentication>
的AccountController登錄操作:
[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();
}
}
驗證提供者:
public bool Authenticate(string username, string password) {
bool result = FormsAuthentication.Authenticate(username, password);
if (result)
{
FormsAuthentication.SetAuthCookie(username, false);
}
return result;
}
我設置了AuthCookie,現在我想知道,如何保護其他控制器 和行動出的AccountController
的應用有一個叫做AdminController控制器,在這裏你可以編輯的產品和以下{控制器/動作}下
產品列表中
管理員/指標
所以,如果我不missunderstanding理論,如果用戶沒有在的AccountController登錄他們不應該能夠調用與[授權]在聲明標記 操作:
public class AdminController : Controller
{
private IProductRepository repository;
public AdminController(IProductRepository repo)
{
repository = repo;
}
[Authorize]
public ActionResult Index()
{
return View(repository.Products);
}
}
事情是我可以調用管理控制器的索引操作,沒有任何問題,也沒有引入登錄。
我需要一些指導來了解它是如何工作的。我已經做了一些研究,找不到任何東西,而且這本書沒有涉及這個話題。
在此先感謝。
編輯:我關閉了Chrome瀏覽器,並沒有改變任何工作。我正在使用標籤,我猜這個cookie甚至停止並開始調試。
您使用的是哪種Visual Studio版本? 2010年還是2012年? –