3

現在、ライセンスの有効期限が切れると使用できなくなるように、アプリケーションを保護しようとしています。ライセンスの有効性を判断するために使用するデータベースに登録キーが保存されています。

私の最初のアイデアは、global.asax ファイルで Session_Start を使用してライセンスの詳細を参照し、必要に応じて「ライセンスの更新ページ」へのリダイレクトを発行することでした。リダイレクトに続いて、コントローラー アクションで Session.Abandon() を呼び出していたので、それ以降のページ要求は同じプロセスを繰り返します。

このアプローチの問題は、ユーザーがページを更新すると、リダイレクト ループが発生するように見えることです。これにより、Session_Start は最良のアイデアではないと思いますが、BeginRequest などにコードを配置することは避けようとしていました。また、ライセンスを更新する有効な試行中にバイパスするのも面倒です。

私は現在、エラー ページがロードされたときに AJAX 呼び出しを行い、サーバー側で Session.Abandon をトリガーするというアイデアを修正しましたが、これはまだ間違っていると感じており、誰かがそのしくみを認識した場合、悪用される可能性があります。

アプリケーション全体が Windows 認証を使用して保護されているため、フォーム認証で行っていたログイン試行中にライセンスを評価するオプションがありません。

代替アプローチの提案はありますか?

4

1 に答える 1

1

これは 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 分間非アクティブであったかどうかを確認し、非アクティブである場合はログアウトします。

于 2014-03-28T17:26:04.113 に答える