使用 Fluent Security 在 mvc Web 应用程序中的控制器视图上设置 SSL 重定向的最佳方法是什么?
问问题
182 次
1 回答
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 命名约定。但是一旦这些都是正确的,您应该会看到此代码完美运行!
于 2013-02-17T22:35:44.780 回答