1

使用 Fluent Security 在 mvc Web 应用程序中的控制器视图上设置 SSL 重定向的最佳方法是什么?

4

1 回答 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 回答