我使用ASP.NET MVC4 SimpleMembership和SimpleRoleProvider在暴露某些方法之前确定授权。
例如:
[Authorize(Roles = "Admin,Corporate")]
public ActionResult Edit(int id = 0)
{
//some code
return View(model)
}
如果用户未处于“管理员”或“公司”角色(或其会话已过期),则会将其正确发送到/帐户/登录页面。
然而,一位测试人员提出了一个很好的观点,即在此登录页面上,没有提示用户为何被发送到此处。如果他们根本无权访问他们试图访问的页面,他们会一次又一次地登录并认为该站点已损坏。
通常,我会向模型添加一个属性,或者在URL中传递一个可选参数,并带有一条消息,例如,
You do not have adequate permissions to access that page.
Please log in as an administrator.
或其他相似之处。但是,因为过滤器在进入方法之前发生了,我将在何处/如何添加消息?