2014-03-28 23 views
2

我目前正在嘗試確保我們的應用程序安全,以便在許可證過期時無法使用。我們的數據庫中有一個註冊密鑰,用於確定許可證的有效性。使用數據庫中的許可證配置驗證MVC應用程序的使用

我最初的想法是,如果需要使用session_start Global.asax文件中提及的許可詳情,併發出重定向到「更新許可證頁面」。在重定向之後,我在我的控制器操作中調用Session.Abandon(),以便對頁面的進一步請求將重複相同的過程。

這種方法的問題是,如果用戶刷新我似乎得到重定向循環出現的頁面。這讓我覺得Session_Start不是最好的主意,但我試圖避免將代碼放在BeginRequest或類似的地方。在更新許可證的有效嘗試期間繞過也很麻煩。

我目前修改了這個想法,當加載錯誤頁面來觸發服務器端的Session.Abandon時,會進行AJAX調用,但是如果有人意識到它是如何工作的話,這仍然會感覺錯誤並且可能會被濫用。

整個應用程序是使用Windows身份驗證,所以我沒有嘗試登錄這將是什麼,我會與窗體身份驗證時做評估許可的選項固定。

任何建議的替代方法?

+0

爲什麼不使用'Application_Start()'而不是'Session_Start()'?檢查每個請求的許可證是沒有意義的(除非許可證每隔5分鐘一次) - 每天一次左右應該沒問題。另外,如果有人想繞過許可證檢查,AJAX調用將很容易被禁用。 – Tommy

+0

@Tommy感謝您的回覆。不幸的是,他們更新了同一應用程序中的註冊碼。 – Copers

回答

0

因爲這是你可以寫,你放置一個基本的控制器,所有的控制器繼承上的自定義屬性的MVC應用程序。

public class MyAuthorization : AuthorizeAttribute 
{ 
    //Call a stored proc or your database layer to check for the 
    //correct license validity 
} 

[MyAuthorization] 
public class BaseController : Controller 
{ 
} 

public class HomeController : BaseController 
{ 
} 

每當控制器被擊中時,它都會檢查許可證密鑰。

這是我們如何處理我們的授權超時。我們檢查我們的數據庫,看看用戶是否已經停用了20分鐘,並且如果有的話登出。

相關問題