我有一个网页,在页面加载时检查加密的cookie以确定用户身份.但是,当我在我的开发盒上本地测试页面时,我无法访问该cookie.
以前我使用appsetting来告诉页面它是否处于开发模式,并且在dev模式下它将加载固定的用户身份.然后我发现了Request.IsLocal
我可以这样检查一下:
if(Request.IsLocal){ FormsAuthentication.SetAuthCookie("testUser",false); }else{ FormsAuthentication.SetAuthCookie(/*EncryptedCookieValue*/,false); }
解决方法
我认为你的实际问题是,你如何才有开发功能?
你可以使用:Environment.UserInteractive
http://msdn.microsoft.com/en-us/library/system.environment.userinteractive.aspx
在IIS或Windows服务中运行时返回false,当它们是用户界面(即开发时的Visual Studio)时返回true.
我认为这比DEBUG预处理器变量更好,因为行为更加一致,您可能会意外地将dll的DEBUG版本上传到您的实时环境,除非您的构建/发布过程非常紧密.
根据经验,从客户端信任任何东西都不是一个好主意.
我也是务实的,你在保护什么,有人会去做多少努力?
以下SO帖子介绍了您不应该信任它的一些原因:
Can I fool HttpRequest.Current.Request.IsLocal?
参考
您可以在http://referencesource.microsoft.com查看来源
public bool IsLocal { get { String remoteAddress = UserHostAddress; // if unkNown,assume not local if (String.IsNullOrEmpty(remoteAddress)) return false; // check if localhost if (remoteAddress == "127.0.0.1" || remoteAddress == "::1") return true; // compare with local address if (remoteAddress == LocalAddress) return true; return false; }
原文地址:https://www.jb51.cc/aspnet/251410.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。