{"id":530,"date":"2016-08-02T11:39:54","date_gmt":"2016-08-02T11:39:54","guid":{"rendered":"d64a340bcb633f536d56e51874281454"},"modified":"2016-08-02T11:39:54","modified_gmt":"2016-08-02T11:39:54","slug":"","status":"publish","type":"post","link":"https:\/\/www.xiaobo.li\/notes\/archives\/530","title":{"rendered":"Authorization"},"content":{"rendered":"<p>\u6388\u6743\u6a21\u5757\u4ee3\u7801\u7247\u6bb5:<\/p>\n<p><pre class=\"brush:c#; toolbar: true; auto-links: true;\">\/\/\/ &lt;summary&gt;\r\n    \/\/\/ HTTP\u6a21\u5757\u9ed8\u8ba4\u6388\u6743\u914d\u7f6e\r\n    \/\/\/ &lt;\/summary&gt;\r\n    public class Authorization\r\n    {\r\n        Dictionary&lt;string, string&gt; users;\r\n        bool hasValidate;\r\n\r\n        \/\/\/ &lt;summary&gt;\r\n        \/\/\/ \u83b7\u53d6\u7528\u6237\u603b\u6570\r\n        \/\/\/ &lt;\/summary&gt;\r\n        public int UserCount\r\n        {\r\n            get\r\n            {\r\n                return this.users.Count;\r\n            }\r\n        }\r\n\r\n        \/\/\/ &lt;summary&gt;\r\n        \/\/\/ \u662f\u5426\u5177\u6709\u9a8c\u8bc1\u9879\r\n        \/\/\/ &lt;\/summary&gt;\r\n        public bool HasValidate\r\n        {\r\n            get { return this.hasValidate; }\r\n        }\r\n\r\n        internal Authorization()\r\n        {\r\n            this.users = new Dictionary&lt;string, string&gt;();\r\n            this.LoadUsers(\"Authorization\");\r\n            this.hasValidate = this.users.Count &gt; 0;\r\n        }\r\n\r\n        \/\/\/ &lt;summary&gt;\r\n        \/\/\/ Authorization\r\n        \/\/\/ &lt;\/summary&gt;\r\n        \/\/\/ &lt;param name=\"sectionName\"&gt;\u914d\u7f6e\u8282\u540d\u79f0&lt;\/param&gt;\r\n        public Authorization(string sectionName)\r\n        {\r\n            if (\"Authorization\".Equals(sectionName, StringComparison.OrdinalIgnoreCase))\r\n                throw new ArgumentOutOfRangeException(\"sectionName\", \"no allows you to define Authorization\");\r\n\r\n            this.users = new Dictionary&lt;string, string&gt;();\r\n            this.LoadUsers(sectionName);\r\n            this.hasValidate = this.users.Count &gt; 0;\r\n        }\r\n\r\n        private void LoadUsers(string sectionName)\r\n        {\r\n            var section = System.Configuration.ConfigurationManager.GetSection(sectionName) as IDictionary;\r\n            if (section != null)\r\n            {\r\n                var enumerator = section.GetEnumerator();\r\n                while (enumerator.MoveNext())\r\n                {\r\n                    this.users.Add(Convert.ToString(enumerator.Key), Convert.ToString(enumerator.Value));\r\n                }\r\n            }\r\n        }\r\n\r\n        \/\/\/ &lt;summary&gt;\r\n        \/\/\/ \u68c0\u9a8c\u662f\u5426\u5408\u6cd5\r\n        \/\/\/ &lt;\/summary&gt;\r\n        \/\/\/ &lt;param name=\"username\"&gt;&lt;\/param&gt;\r\n        \/\/\/ &lt;param name=\"password\"&gt;&lt;\/param&gt;\r\n        \/\/\/ &lt;returns&gt;true \u901a\u8fc7 \/ false \u4e0d\u901a\u8fc7&lt;\/returns&gt;\r\n        public bool Validate(string username, string password)\r\n        {\r\n            if (this.hasValidate == false)\r\n            {\r\n                \/\/\u4e0d\u9700\u8981\u8ba4\u8bc1\r\n                return true;\r\n            }\r\n\r\n            var sourcePassword = \"\";\r\n            return this.users.TryGetValue(username, out sourcePassword) &amp;&amp; sourcePassword.Equals(password);\r\n        }<\/pre>\n<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u6388\u6743\u6a21\u5757\u4ee3\u7801\u7247\u6bb5:<\/p>\n<p><pre class=\"brush:c#; toolbar: true; auto-links: true;\">\/\/\/ &lt;summary&gt;\r\n    \/\/\/ HTTP\u6a21\u5757\u9ed8\u8ba4\u6388\u6743\u914d\u7f6e\r\n    \/\/\/ &lt;\/summary&gt;\r\n    public class Authorization\r\n    {\r\n        Dictionary&lt;string, string&gt; users;\r\n        bool hasValidate;\r\n\r\n        \/\/\/ &lt;summary&gt;\r\n        \/\/\/ \u83b7\u53d6\u7528\u6237\u603b\u6570\r\n        \/\/\/ &lt;\/summary&gt;\r\n        public int UserCount\r\n        {\r\n            get\r\n            {\r\n                return this.users.Count;\r\n            }\r\n        }\r\n\r\n        \/\/\/ &lt;summary&gt;\r\n        \/\/\/ \u662f\u5426\u5177\u6709\u9a8c\u8bc1\u9879\r\n        \/\/\/ &lt;\/summary&gt;\r\n        public bool HasValidate\r\n        {\r\n            get { return this.hasValidate; }\r\n        }\r\n\r\n...<\/pre>\n<\/p>\n<p> <a href=\"https:\/\/www.xiaobo.li\/notes\/archives\/530\">\u7ee7\u7eed\u9605\u8bfb <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[299],"tags":[],"class_list":["post-530","post","type-post","status-publish","format-standard","hentry","category-csharpcode"],"_links":{"self":[{"href":"https:\/\/www.xiaobo.li\/notes\/wp-json\/wp\/v2\/posts\/530","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.xiaobo.li\/notes\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.xiaobo.li\/notes\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.xiaobo.li\/notes\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.xiaobo.li\/notes\/wp-json\/wp\/v2\/comments?post=530"}],"version-history":[{"count":0,"href":"https:\/\/www.xiaobo.li\/notes\/wp-json\/wp\/v2\/posts\/530\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.xiaobo.li\/notes\/wp-json\/wp\/v2\/media?parent=530"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.xiaobo.li\/notes\/wp-json\/wp\/v2\/categories?post=530"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.xiaobo.li\/notes\/wp-json\/wp\/v2\/tags?post=530"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}