我使用asp.net mvc 5.1,asp.net identity 2.0创建了一个项目。在我将其部署到IIS后,当我转到安全页面“https://www.xxxx.com/Account/Login”时,登录后,如果我转到https://www.xxxx.com。 Request.IsAuthenticated在_LoginPartial.cshtml页面上返回true,但转到http://www.xxxx.com,始终返回false。
答案 0 :(得分:1)
听起来您可能将选项设置为仅通过HTTPS发送身份验证Cookie,因此,如果您通过HTTP导航到某个页面,则不会发送身份验证Cookie,并且应用程序会认为您未经身份验证。
有问题的设置是requireSSL
部分中的system.web/authentication/forms
<authentication mode="Forms">
<forms name="auth" loginUrl="~/login" requireSSL="true" />
</authentication>
,它控制是否在身份验证cookie上使用secure
属性。
由于您使用的是HTTPS,我建议您不要通过HTTP导航网站。
答案 1 :(得分:0)
RequireSSL只允许通过https传输cookie。如果您有此特定要求,则需要在代码中采取额外的预防措施。
但请注意,此时您正在做的事情。
您可以在适当的位置使用Request.IsSecureConnection。这可以在模块中或在过滤器上或过滤器中的基类中。
这里有一篇过时的文章,但可以作为指针。 http://r2d2.cc/2011/08/05/how-to-switch-between-http-and-https-in-asp-net-mvc2-and-allow-ajax-requests-from-site-master/
警告:请谨慎使用,因为您可能需要在服务器上采取额外的预防措施以避免劫持。