我有一个控制器,我只希望经过身份验证的用户能够访问。我是否必须在控制器中的每个方法中进行检查以验证用户是否已通过身份验证,或者是否有其他方法可以处理此问题?我可以使用注释来代替吗?
来自我的控制器的示例:
public ActionResult Index()
{
if (UserVerified())
{
...
}
return RedirectToAction("Login", "Account");
}
public ActionResult FacebookLogin()
{
if (UserVerified())
{
....
}
return RedirectToAction("Login", "Account");
}
private bool UserVerified()
{
if (User != null && User.Identity != null && User.Identity.IsAuthenticated)
{
return true;
}
return false;
}
您可以为其使用AuthorizeAttribute。
付诸行动。
[Authorize]
public ActionResult Index()
{
}
[Authorize]
public ActionResult FacebookLogin()
{
}
它将为您完成整个工作。它检查当前用户是否已通过身份验证。如果他通过了身份验证-继续执行操作,否则,返回操作-返回主页。
您也可以将此属性添加到控制器。然后,所有操作都将需要授权。
[Authorize]
public class HomeController
{
public ActionResult Index()
{
}
public ActionResult FacebookLogin()
{
}
}
更新:是的,正如卡米尔(Kamil)所说。请阅读这篇文章。
http://www.asp.net/web-api/overview/security/authentication-and-authorization-in-aspnet-web-api
您现在花一些时间,将来花更少的时间来询问有关ASP.NET身份验证的问题。
顺便说一句,您不需要检查
User != null && User.Identity != null
如果使用默认身份验证,则可以始终确保这User.Identity
是一个适当的对象。您可以User.Identity.IsAuthenticated
直接访问。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句