2015-09-28 48 views
0

我正在开发使用mvc5的erp系统。我有我自己的会员制度建立和用户和他的用户权限保存在会话变量一旦用户登录。授权部分几乎完成,我想。但对于身份验证,现在即时尝试限制未经身份验证的用户访问。我在我的web.config未经身份验证的自定义会员系统用户重定向mvc5

<authentication mode="Forms"> 
<forms loginUrl="~/Login/Login" timeout="2880" /> 
</authentication> 

尝试过这样的

和控制器我把[授权]属性。

这适用于未经验证的用户。他们被重定向到登录页面。但是这也限制了认证用户的访问(这意味着未认证或认证的用户都不能访问具有授权属性的控制器)。

如果我删除授权属性,它会给我一个错误,因为没有用户被分配到会话变量。这意味着即使没有授权属性 未经身份验证的用户也可以访问控制器 - 尽管web.config已被修改。

我认为这涉及到创建一个自定义属性。但我不知道如何解决这个问题。所有帮助赞赏。提前致谢!

回答

0

经过研究,我想出了解决方案。 我创建了一个自定义授权属性。

public class CustomAuthorize : AuthorizeAttribute 
{ 
    protected override bool AuthorizeCore(HttpContextBase httpContext) 
    { 
     var authroized = base.AuthorizeCore(httpContext); 

     // Now check the session: 
     var myvar = httpContext.Session["User"]; 
     if (myvar == null) 
     { 
      // the session has expired 
      return false; 
     } 

     return true; 
    } 
} 

而在我的控制器,而不是[授权]我把[CustomAuthorize]。

在web.config中

<authentication mode="Forms"> 
<forms loginUrl="~/Login/Login" timeout="2880" /> 
</authentication> 
相关问题