2013-02-17 55 views

回答

2

最好的方法是創建一個自定義策略和策略處理程序。這是我如何完成它:

我的自定義策略

public class RequireSslPolicy : ISecurityPolicy 
{ 
    public PolicyResult Enforce(ISecurityContext context) 
    { 
     var req = HttpContext.Current.Request; 
     if (!req.IsSecureConnection && !req.IsLocal) 
      return PolicyResult.CreateFailureResult(this, "A Secure Connection is Required."); 
     return PolicyResult.CreateSuccessResult(this); 
    } 
} 

我的自定義政策管理

public class RequireSslPolicyViolationHandler : IPolicyViolationHandler 
{ 
    public ActionResult Handle(PolicyViolationException exception) 
    { 
     var req = HttpContext.Current.Request; 
     var url = req.Url.ToString().ToLower().Replace("http:", "https:"); 
     return new RedirectResult(url); 
    } 
} 

代碼到一個控制器

c.For<AccountController>().AddPolicy<RequireSslPolicy>(); 
內的策略添加到控制器或操作

這就是它!當然,您需要確保您正確配置您的依賴注入並遵循Fluent Security命名約定。但是一旦這些是正確的,你應該看到這個代碼完美無缺!

相關問題