1
私は自分でIRuntimePolicy
を実装したいと思います。私は与えられた例に従っていますが、私たちのデータベースにアクセスする必要があります。そうしないと、UserSessionオブジェクトを注入することができません。GlimpseSecurityPolicyの注入
実行時にセキュリティオブジェクトが作成されるのはいつですか?これは可能ですか?私は例を見つけませんでした。
Ninject 3.2.3を使用しています(または最新のMVC 5が利用可能です)。 DependencyResolver.Current.GetService<IThing>()
を使用する:
私は最終的に
public class GlimpseSecurityPolicy : IRuntimePolicy
{
private readonly IAclManager aclManager;
private readonly IUserSession userSession;
public GlimpseSecurityPolicy(IUserSession userSession, IAclManager aclManager)
{
this.userSession = userSession;
this.aclManager = aclManager;
}
public RuntimeEvent ExecuteOn
{
// check policy when request ends and when executing a resource (like glimpse.axd)
get { return RuntimeEvent.EndRequest | RuntimeEvent.ExecuteResource; }
}
public RuntimePolicy Execute(IRuntimePolicyContext policyContext)
{
if (!this.aclManager.IsUserAllowed(UserAction.AccessGlimpse, this.userSession.GetUser()))
{
return RuntimePolicy.Off;
}
return RuntimePolicy.On;
}
}
私はしばらく前にこれを試してみましたどこにも行かない、私はそれラウンドを取得するためにサービスロケータパターンを使用して終了。 'DependencyResolver.Current.GetService()'また、起動時またはglobal.asaxでdependancyresolverが必要になります。これは偉大ではない、私は代替を見ることを愛するだろう –
@ LukeMcGregor私は同じ構造で終わった。 – Santhos