小编Phi*_*ill的帖子

生成API密钥的最佳方法

因此,现在有很多不同的服务,谷歌API,Twitter API,Facebook API等.

每个服务都有一个API密钥,如:

AIzaSyClzfrOzB818x55FASHvX4JuGQciR9lv7q

所有密钥的长度和它们包含的字符各不相同,我想知道生成API密钥的最佳方法是什么?

我不是要求特定的语言,只是创建密钥的一般方法,它们是用户应用程序的详细信息加密,哈希,或随机字符串的哈希等等.我们应该担心哈希算法(MSD,SHA1,bcrypt)等?

编辑: 我已经和一些朋友(电子邮件/推特)进行了交谈,他们建议只使用带有短划线的GUID.

这对我来说似乎有些惹人注意,希望能得到更多的想法.

security api-key

64
推荐指数
5
解决办法
4万
查看次数

Number.IsNaN()比isNaN()更破碎

Soooooo isNaN显然在JavaScript中被打破了,例如:

isNaN('')
isNaN('   ')
isNaN(true)
isNaN(false)
isNaN([0])
Run Code Online (Sandbox Code Playgroud)

回归假,当他们看起来都是......不是数字......

在ECMAScript 6中,草案包含一个新的,Number.isNaN但看起来像(imo)这也被打破了......

我期待

Number.isNaN('RAWRRR')
Run Code Online (Sandbox Code Playgroud)

要返回true,因为它是一个字符串,并且无法转换为数字...但是......

在此输入图像描述

似乎我会考虑的事情......不是数字,确实不是,不是数字......

http://people.mozilla.org/~jorendorff/es6-draft.html#sec-isfinite-number

MDN的例子说:

Number.isNaN( "布拉布拉"); //例如,isNaN就是这样

我不明白这是怎样的"原始全球isNaN的更强大的版本." 当我无法检查,看看事情是不是一个数字.

这意味着我们仍然需要进行实际的类型检查以及检查isNaN ...这看起来很傻......

http://people.mozilla.org/~jorendorff/es6-draft.html#sec-isnan-number

这里的ES3草案基本上说,一切都是假的,除了它的Number.NaN

有没有人发现这个坏了或者我只是不明白isNaN的意思?

javascript nan ecmascript-6

52
推荐指数
5
解决办法
2万
查看次数

带或不带域名的Cookie(浏览器不一致)

我注意到,在cookie方面,浏览器之间存在一些真正的不一致.

这将是相当长的,所以请耐心等待.

注意:我在我的主机文件中设置了一个名为"testdomain.com"的域,这个错误 WONT 在使用"localhost"时起作用.

注意2:我很想知道如果它按照名称检索cookie,如果它提供了一系列cookie,那么它在Apache/PHP上是如何工作的.

维基百科

维基百科声明:http://en.wikipedia.org/wiki/HTTP_cookie#Domain_and_Path

域和路径
cookie域和路径定义cookie的范围 - 它们告诉浏览器只应将cookie发送回给定域和路径的服务器.如果未指定,则它们默认为请求的对象的域和路径.

所以如果我们推倒:

Response.Cookies.Add(new HttpCookie("Banana", "2")
{

});
Run Code Online (Sandbox Code Playgroud)

我们应该获得一个cookie,其中所使用的域是来自请求对象的域,在这种情况下它应该是"testdomain.com".

W3

W3在cookie规范中说明:http://www.w3.org/Protocols/rfc2109/rfc2109

域=域名

可选的.Domain属性指定cookie有效的域. 明确指定的域必须始终以点开头.

所以如果我们推倒:

Response.Cookies.Add(new HttpCookie("Banana", "1")
{
    Domain = Request.Url.Host
});
Run Code Online (Sandbox Code Playgroud)

我们明确地推下了主机名,我们应该在cookie上设置一个以点为前缀的域名,在这种情况下它应该是".testdomain.com".

它还说明了维基百科上的内容:

域默认为请求主机.(请注意,request-host开头没有点.)


和我一起到目前为止?

如果我使用第一种方法,则定义域:

Response.Cookies.Add(new HttpCookie("Banana", "1")
{
    Domain = Request.Url.Host
});
Run Code Online (Sandbox Code Playgroud)

这是结果:

IE9:1个cookie

IE与1 cookie和域明确设置

Opera:1个cookie

Opera明确设置了1个cookie和域

Firefox:1个cookie

Firefox明确设置了1个cookie和域

Chrome:1个Cookie

已明确设置1个Cookie和域名的Chrome

如您所见,Opera和IE都设置了一个没有点前缀的EXPLICIT域.

Firefox和Chrome DO都使用点前缀设置EXPLICIT域.

如果我使用以下代码:

Response.Cookies.Add(new HttpCookie("Banana", "2")
{

});
Run Code Online (Sandbox Code Playgroud)

IE/Opera:两者都有完全相同的结果,没有点前缀的域.

有趣的是,Firefox和Chrome都创建了没有点前缀的cookie.

(我清除了所有cookie并再次运行代码)

火狐:

Firefox明确设置了1个cookie和域

铬:

已明确设置1个Cookie和域名的Chrome

有趣的位置

这是它变得有趣的地方.如果我像这样一个接一个地写饼干:

Response.Cookies.Add(new HttpCookie("Banana", "1") …
Run Code Online (Sandbox Code Playgroud)

c# cookies cross-browser

44
推荐指数
2
解决办法
4万
查看次数

Web API自托管主机 - 在所有网络接口上绑定

如何在所有网络接口上进行Web API自主绑定?

我目前有以下代码.不幸的是,它仅绑定在localhost上.因此,从localhost以外的地方访问此服务器失败.

var baseAddress = string.Format("http://localhost:9000/"); 
            using (WebApp.Start<Startup> (baseAddress)) 
            {
                Console.WriteLine("Server started");
                Thread.Sleep(1000000);
            }
Run Code Online (Sandbox Code Playgroud)

c# asp.net self-hosting asp.net-web-api2

26
推荐指数
2
解决办法
1万
查看次数

流利的NHibernate Where Clause

我必须在Fluent NHibernate中编写一个查询

Select * from Users where UserName = 'Abcd' AND Password = '123456'

如何用上面的查询创建 session.CreateCriteria

nhibernate fluent-nhibernate

21
推荐指数
1
解决办法
2万
查看次数

为什么百分比格式说明符乘以100?

(找不到重复)

有谁知道原因:

http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx#PFormatString

'p'字符串格式为百分比,在用百分号进行格式化之前将值乘以100?

百分比("P")格式说明符

百分比("P")格式说明符将数字乘以100并将其转换为表示百分比的字符串.精度说明符表示所需的小数位数.如果省略精度说明符,则使用当前PercentDecimalDigits属性提供的默认数值精度.

反正是否有格式化之前阻止值乘以100?而不是做:

(value / 100).ToString("p")
Run Code Online (Sandbox Code Playgroud)

c# string-formatting

18
推荐指数
2
解决办法
1万
查看次数

跨表的SQL Server唯一索引

可以跨表创建唯一索引,基本上使用视图和唯一索引.

我有一个问题.

给出两个(或三个)表.

Company
- Id
- Name

Brand
- Id
- CompanyId
- Name
- Code

Product
- Id
- BrandId
- Name
- Code
Run Code Online (Sandbox Code Playgroud)

我想确保组合的独特性:

Company / Brand.Code
Run Code Online (Sandbox Code Playgroud)

Company / Brand.Product/Code
Run Code Online (Sandbox Code Playgroud)

很独特.

CREATE VIEW TestView
WITH SCHEMABINDING
AS
    SELECT b.CompanyId, b.Code
    FROM dbo.Brand b

    UNION ALL

    SELECT b.CompanyId, p.Code
    FROM dbo.Product p
         INNER JOIN dbo.Brand b ON p.BrandId = b.BrandId
Run Code Online (Sandbox Code Playgroud)

视图的创建是成功的.

CREATE UNIQUE CLUSTERED INDEX UIX_UniquePrefixCode
    ON TestView(CompanyId, Code)
Run Code Online (Sandbox Code Playgroud)

因为这个失败了 UNION

我该如何解决这个问题呢?

基本上,两者的代码都Brand/Product不能在公司内重复.

笔记:

我得到的错误是: …

sql sql-server unique-index

12
推荐指数
1
解决办法
1866
查看次数

使用子域时防止预检OPTIONS

给出两个子域:

web.mysite.comapi.mysite.com

目前正在进行任何请求,web.api.产生预检OPTIONS请求.如果它没有在中国增加额外600毫秒的请求,这不会是一个问题.

我被告知document.domain = 'mysite.com';JS 中的设置可以解决问题,但这根本没有帮助.

是否可以/如何在发送到不同的子域时禁用OPTIONS请求.

javascript ajax cors

12
推荐指数
2
解决办法
2870
查看次数

为什么VB中的lambda表达式与C#不同?

我刚刚遇到NHibernate中的一个错误,该错误恰好已经被提出:https: //nhibernate.jira.com/browse/NH-2763

我不确定这是否适用于枚举以外的任何其他内容,但是当使用VB中的Lambda时,它看起来与C#中的相同Lambda不同.

C#:

Where(x => x.Status == EmployeeStatus.Active)
Run Code Online (Sandbox Code Playgroud)

VB

Where(Function(x) x.Status = EmployeeStatus.Active)
Run Code Online (Sandbox Code Playgroud)

就我所知,它们是一样的吗?(我的VB不是很好)

如果我在同一行代码上放置一个断点,那么上面的代码将被传入.在C#我得到:

C#版本

在VB版本传入的同一行,我得到:

VB版

这是我做错了吗?结果是否相同,只是在C#/ VB之间显示不同?

编辑: 好的,所以它们显示不同,但它们不能相同,因为NHibernate无法处理它.NHibernate完全处理了C#版本,VB版本在抛出以下异常时解析:

例外

NHibernate StackTrace:

   at NHibernate.Impl.ExpressionProcessor.FindMemberExpression(Expression expression) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Impl\ExpressionProcessor.cs:line 168
   at NHibernate.Impl.ExpressionProcessor.ProcessSimpleExpression(Expression left, Expression right, ExpressionType nodeType) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Impl\ExpressionProcessor.cs:line 323
   at NHibernate.Impl.ExpressionProcessor.ProcessSimpleExpression(BinaryExpression be) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Impl\ExpressionProcessor.cs:line 316
   at NHibernate.Impl.ExpressionProcessor.ProcessBinaryExpression(BinaryExpression expression) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Impl\ExpressionProcessor.cs:line 418
   at NHibernate.Impl.ExpressionProcessor.ProcessExpression(Expression expression) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Impl\ExpressionProcessor.cs:line 486
   at NHibernate.Impl.ExpressionProcessor.ProcessExpression[T](Expression`1 expression) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Impl\ExpressionProcessor.cs:line 504
   at NHibernate.Criterion.QueryOver`2.Add(Expression`1 expression) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Criterion\QueryOver.cs:line 635
   at NHibernate.Criterion.QueryOver`2.NHibernate.IQueryOver<TRoot,TSubType>.Where(Expression`1 expression) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Criterion\QueryOver.cs:line 686
   at *removed*.EmployeeRepository.GetByEntityId(Int64 entityId, …
Run Code Online (Sandbox Code Playgroud)

c# vb.net lambda

11
推荐指数
2
解决办法
1025
查看次数

Per-Route身份验证导致RouteExecutionEarlyExitException

我对Nancy很陌生,现在正在尝试使用Auth.期待完全实现Forms身份验证.

出于测试目的,我设置了3个模块.

其他模块:

public class OtherModule : NancyModule
{
    public OtherModule() : base()
    {
        // Use global, module level authentication.
        this.RequiresAuthentication();

        Get["/other"] = _ =>
        {
            return "Other";
        };

        Get["/woot"] = _ =>
        {
            return "Woot";
        };
    }
}
Run Code Online (Sandbox Code Playgroud)

主要模块:

public class MainModule : NancyModule
{
    public MainModule() : base()
    {
        Get["/yolo"] = _ =>
        {
            // Use per-route authentication.
            this.RequiresAuthentication();

            return "#YOLO";
        };
    }
}
Run Code Online (Sandbox Code Playgroud)

AuthModule:

public class AuthModule : NancyModule
{
    public AuthModule() : base()
    {
        Get["/login"] = …
Run Code Online (Sandbox Code Playgroud)

c# authentication nancy

9
推荐指数
1
解决办法
1454
查看次数