2015-09-28 45 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> 
相關問題