我的网站中有2个控制器,其中一个用于登录页面,其余的是我的实际应用程序。我的登录目前正常,它将检查我的数据库并重定向到所需的页面。
但我不知道最好的方法是进行实际的授权检查,因为如果有人写了重定向的URL,他们也会加载页面。我研究并提出了Owin,但它看起来太复杂了,它是最好的方式吗?
答案 0 :(得分:1)
您可以创建自己的AuthorizeAttribute
并覆盖AuthorizeCore
方法
当用户登录时 - 您将会话添加到会话
Session["IsLogin"] = true;
创建一个继承AuthorizeAttribute
和覆盖AuthorizeCore
的属性,以便:
public class SimpleAuthorizeAttribute : AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
if(Session["IsLogin"] != null && Session["IsLogin"] == true)
{
return true;
}
else
{
return false;
}
}
}
将属性应用于您的控制器
[SimpleAuthorize]
public class NeedLoginController : Controller
{
}
如果您想更改未经授权的用户重定向的位置,您可以在web.config
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" />
</authentication>
或覆盖HandleUnauthorizedRequest
,以便:
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
filterContext.Result = new RedirectToRouteResult(
new RouteValueDictionary(
new
{
controller = "Account",
action = "Login"
})
);
}
AuthorizeAttribute是asp .net mvc中的action filter
有关动作过滤器的更多信息,请查看msdn https://msdn.microsoft.com/en-us/library/dd410209(v=vs.100).aspx