小编Jon*_*han的帖子

在ASP.NET中开发自定义登录/身份验证系统的最佳方法是什么

我正在开发的网站将允许用户在3个级别登录.

1级 - 未登录

2级 - 他们注册他们的电子邮件地址并收到确认电子邮件,并以此方式登录.

级别2 - 他们使用用户名/密码登录,然后将其发送到Web服务.如果Web服务返回"成功登录"结果,则会登录到网站.

根据登录级别,某些网页将可用,而其他网页将受到限制.

我的问题是,我应该如何发展这个?

我在ASP.NET MVC中做这个项目.

我应该只编写自己的AccountController吗?我应该使用.NET Forms身份验证吗?使用.NET代码手动执行表单身份验证有什么好处?

如果我自己这样做,在成功登录后,我只是将登录用户存储在会话变量中.这样做有什么害处,或者我正在做什么,是否可以?

.net forms authentication login

5
推荐指数
1
解决办法
1790
查看次数

在ASP.NET MVC网站上实现搜索

我使用ASP.NET MVC创建了一个内容管理的网站.所有内容都存储在SQL Server数据库的"Content"表中,文本本身存储在数据类型"XML"的列中.

我想在网站上添加搜索功能,搜索所有XML内容并返回结果列表,每个结果都链接到内容项.

关于哪种技术最合适的想法?

我应该使用SQL Server全文索引,还是像DotLucene这样的其他东西?

.net asp.net-mvc search full-text-search

5
推荐指数
1
解决办法
1820
查看次数

什么是依赖于数据的BDD测试的最佳策略

编写BDD测试的策略是什么,可以测试依赖于系统中某些数据的行为?

例如,假设我正在使用以下方案:

Feature: Search for friend
    In order to find a friend
    As a user
    I want to search my list of friends
    And filter by 'first name'
Run Code Online (Sandbox Code Playgroud)

除非/直到一些"虚拟"朋友进入系统,否则这个测试怎么能成功?

更重要的是,测试会使用什么"虚拟"标准?


我应该硬编码朋友的名字,假设它已经存在于数据库中?

但是,如果我将代码移动到具有新数据库的新环境,该怎么办?


或者,我应该编写代码来在执行每个测试之前手动将虚拟数据插入系统吗?

但这将是在测试框架内修改应用程序的内部状态,这似乎是一种糟糕的方法,因为我们应该将程序视为黑盒子,并且只通过接口来处理它.


或者,我是否会创建其他方案/测试,其中使用程序的界面创建数据?

例如,"功能:将新朋友添加到我的列表中".然后我可以运行该测试,添加一个名为'Lucy'的用户,然后运行'搜索朋友'测试以搜索现在存在于数据库中的'Lucy'.

但是,然后我将在我的场景之间引入依赖关系,这与测试应该可以独立运行的常见建议相矛盾.


哪一个最好的策略?或者,还有更好的方法?

tdd bdd integration-testing automated-tests

5
推荐指数
1
解决办法
2766
查看次数

将大型数据集传递给客户端 - Javascript数组还是JSON?

我正在向客户端传递一个最多1000行的表,其中包括名称,ID,纬度和经度值.

然后,该列表将由Javascript处理并转换为Google地图上的标记.

我最初计划用JSON做这个,因为我希望代码可读且易于处理,并且因为我们可能会随着时间的推移添加更多结构.

但是,我的同事建议将其作为Javascript数组传递,因为它会大大减小大小.

这让我想到,也许JSON有点多余.毕竟,对于定义的每一行,每个字段的名称也是重复输出的.然而,对于阵列,单元的位置用于指示场.

但是,通过使用数组真的会有性能提升吗?

该网站使用GZIP压缩.此压缩是否足以处理JSON字符串中的任何冗余?

[编辑]

我意识到JSON只是一种表示法.

但我真正的问题是 - 表现最好的表现方式是什么?

如果我使用完全命名的属性,那么我可以使用这样的代码:

var x = resultset.rows[0].name;
Run Code Online (Sandbox Code Playgroud)

然而,如果我不这样做,它将看起来不那么可读,如下所示:

var x = resultset.rows[0][2];
Run Code Online (Sandbox Code Playgroud)

我的问题是 - 代码可读性的牺牲是否值得为性能提升?或不?


附加说明:

根据维基百科,Deflate压缩算法(由gzip使用)执行'Duplicate string elimination'.http://en.wikipedia.org/wiki/DEFLATE#Duplicate_string_elimination

如果这是正确的,我没有理由担心JSON中的任何冗余,因为它已经被处理掉了.

javascript json dataset

4
推荐指数
1
解决办法
5342
查看次数

获取谷歌地图标记的像素坐标

是否可以确定给定标记的像素坐标,同时考虑到地图的当前缩放级别和可见区域?

google-maps pixel latitude-longitude coordinates marker

4
推荐指数
1
解决办法
5530
查看次数

你在哪里为私人方法进行单元测试?

在C#类中,将私有函数的单元测试放在哪里?

维基百科一篇文章建议:

  • 将测试与他们正在测试的成员放在同一个类中
  • 使用部分类

就个人而言,这些方法都不合适,我更喜欢将单元测试放在一个单独的项目中.

有什么想法吗?

(我知道关于是否应该对私人方法进行测试存在相当多的争论.我想听听论点的两个方面.)

c# tdd unit-testing encapsulation information-hiding

4
推荐指数
3
解决办法
2363
查看次数

澳大利亚银行通过BSB查询,使用Javascript

有没有办法通过Javascript查找银行名称和分支?

也许外部服务或完整的数据集可以在内部托管并通过JSON访问?

javascript validation bank

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

如何在一个句子中覆盖屏幕阅读器的单词发音,而不会在句子中间停顿?

假设我在HTML中有以下句子:

<p>Please enter your licence number</p>

屏幕阅读器错误地将"许可"一词称为"liss-ens"(语音拼写).它应该发音为"lice-ens"(拼音拼写).

我想通过向屏幕阅读器提供语音拼写来解决这个问题,同时让文本在视觉上显得相同.

我可以使用<span>s,aria-属性和样式如下:

<p>Please enter your <span aria-hidden="true">licence</span><span style="position: absolute; left: -10000em;">license</span> number</p>

这很好用,除了屏幕阅读器(我在MacOS上使用VoiceOver测试)在第一个跨度时暂停,迫使我按[VO] + [向右箭头]前进到下一个单词:

"请输入你的"...... [VO] + [右箭头] ..."lice-ens"... [VO] + [右箭头] ......"数字"

我希望屏幕阅读器能够顺利地读出句子而不会暂停.

这可能吗?或者我不应该试图控制这个?

html css accessibility screen-readers voiceover

4
推荐指数
1
解决办法
784
查看次数

何时在 ES6 中使用 Object map 与 Map 类

假设我想创建一个字典,例如,汽车品牌到一个或多个模型。

似乎我可以在 ES6 中以两种不同的方式做到这一点。

1. 创建一个对象映射:

代码:

const makesAndModels = {
    "mazda": [
        { name: "Miata" },
        { name: "626" }
    ],
    "toyota": [
        { name: "Camry" }
    ],
    ...
};
Run Code Online (Sandbox Code Playgroud)

2. 创建一个 ES6 Map 实例:

代码:

const makes = {
    mazda: { name: "Mazda" },
    toyota: { name: "Toyota" }
};

const makesAndModels = new Map([
    [makes.mazda, [
        { name: "Miata" },
        { name: "626" }
    ]],
    [makes.toyota, [
        { name: "Camry" }
    ]],
    ...
]);
Run Code Online (Sandbox Code Playgroud)

上述两种方法之间的主要区别和优缺点是什么?

javascript ecmascript-6

4
推荐指数
1
解决办法
4750
查看次数

为什么模拟的 axios get 方法返回未定义?

我编写了一个相当简单的异步方法,用于通过 HTTP 检索结果:

\n\n
import axios from "axios";\n\nconst BASE_URI = "http://api.tvmaze.com";\n\nexport const getSearchShows = async (search: string) => {\n  const uri = `${BASE_URI}/search/shows?q=${encodeURIComponent(search)}`;\n  const response = await axios.get(uri);\n\n  return response.data;\n};\n
Run Code Online (Sandbox Code Playgroud)\n\n

我想对其进行单元测试。因此,我编写了以下 Jest 测试,该测试旨在模拟 axios 并返回假结果,然后我可以对其进行断言:

\n\n
import axios from "axios";\n\nimport fakeSearchShowsResponse from "../data/search-shows--q=test.json";\n\nimport { getSearchShows } from "./TvShows.http";\n\njest.mock("axios");\n\ndescribe("TvShows.http", () => {\n  describe("getSearchShows", () => {\n    it("retrieves shows over http and correctly deserializes them", async () => {\n\n      const mockAxiosGet = jest.spyOn(axios, "get");\n\n      mockAxiosGet.mockImplementation(async () => fakeSearchShowsResponse);\n\n      const shows = …
Run Code Online (Sandbox Code Playgroud)

javascript unit-testing reactjs jestjs axios

4
推荐指数
1
解决办法
7626
查看次数