问题列表 - 第3100页

ASP.NET网站+ Windows窗体应用程序+ WCF服务:客户端凭据

假设我正在考虑设计一个WCF服务,其主要目的是提供可供三个不同应用程序使用的广泛服务:面向公众的Web站点,内部Windows窗体应用程序和无线移动设备.该服务的目的有两个:(1)在中央位置合并与业务流程相关的代码,以及(2)锁定对遗留数据库的访问,最终一劳永逸地将其隐藏在一套服务之后.

目前,三个应用程序中的每一个都有自己的持久性和域层,同一数据库的视图略有不同.而不是所有三个应用程序都与数据库通信,它们将与WCF服务进行通信,从而启用某些客户端的新功能(移动选择器当前无法触发进程发送电子邮件),并集中通知系统(而不是对于新订单,计划任务每​​五分钟轮询一次数据库,只需在AcceptNewOrder()其中一个客户端调用服务方法时ping开销分页系统).总而言之,到目前为止听起来非常清醒.

然而,就整体设计而言,在安全方面我很难过.Windows窗体应用程序目前只使用Windows主体; 员工存储在Active Directory中,在应用程序启动时,他们可以以当前Windows用户身份登录(在这种情况下不需要密码),也可以提供他们的域名和密码.移动客户端没有任何用户概念; 它与数据库的连接是一个硬编码字符串.该网站有数千个用户存储在旧数据库中.那么如何实现身份模型并配置WCF端点来处理这个问题呢?

就Windows窗体应用程序而言,这不是一个大问题:WCF代理可以启动一次并且可以在内存中闲逛,所以我只需要一次客户端凭据(如果代理有问题,可以再次提示它们).移动客户端可以是特殊的,并使用X509证书对WCF服务进行身份验证.但是我该如何处理这个网站呢?

在网站的情况下,允许匿名访问某些服务.对于需要在假设的"客户"角色中进行身份验证的服务,我显然不希望在每个请求上对它们进行身份验证,原因有两个:

  • 我每次都需要他们的用户名和密码.几乎可以在任何地方存储这对信息 - 会话,加密的cookie,月亮 - 似乎是一个坏主意.
  • 我必须为每个请求点击数据库中的users表.哎哟.

我能想到的唯一解决方案是将Web站点视为可信子系统.WCF服务需要来自Web站点的特定X509证书.该网站在内部使用表单身份验证(调用AuthenticateCustomer()返回布尔结果的服务上的方法),可以向凭据列表添加其他声明,例如"joe@example.com以客户身份登录".然后以某种方式可以在具有该声明的服务上构建自定义IIdentity对象和IPrincipal,WCF服务确信该网站已经正确地验证了该客户(它将知道该声明尚未被篡改,至少,因为它会提前知道网站的证书.

所有这一切到位,WCF服务代码将能够说这样的话[PrincipalPermission.Demand(Role=MyRoles.Customer)]还是[PrincipalPermission.Demand(Role=MyRoles.Manager)]Thread.CurrentPrincipal将具有表示的用户(电子邮件地址为雇员客户或专有名称的东西,他们都非常有用用于记录和审计).

换句话说,每个服务都会存在两个不同的端点:一个接受着名的客户端X509证书(用于移动设备和网站),另一个接受Windows用户(用于员工).

对不起,这么久.所以问题是:这有什么意义吗?提议的解决方案是否有意义?我是不是太复杂了?

architecture asp.net authentication wcf

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

linq to sql:从同一个表中连接多个列

如何通过Linq从同一个表中连接多个列?

例如:我已经有了......

join c in db.table2 on table2.ID equals table1.ID
Run Code Online (Sandbox Code Playgroud)

我需要添加这个......

join d in db.table2 on table2.Country equals table1.Country 
Run Code Online (Sandbox Code Playgroud)

join linq-to-sql

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

是否可以缓存iPhone UIWebView中加载的资源?

我有一个简单的应用程序加载一个针对iPhone优化的网站UIWebView.

问题是,缓存似乎不起作用:

[webView loadRequest: [NSURLRequest requestWithURL: [NSURL URLWithString: url]
                                       cachePolicy: NSURLRequestUseProtocolCachePolicy
                                   timeoutInterval: 60.0]];
Run Code Online (Sandbox Code Playgroud)

此远程页面中引用的任何内容(css,图像,外部javascript文件)都不会被缓存(请求永远不会以缓存控制的方式发送If-Modified-Since标头或其他任何内容.)

可能吗?在普通的Cocoa WebView中,似乎有一个委托方法可以调用每个资源请求并发布load(-didFinishLoadingFromDataSource:),您可以使用它来滚动自己的缓存..但这似乎不适用于此.

我的整个页面(页面及其参考资源)压缩了大约89K ..这在一些地方比3G慢,甚至比EDGE更糟糕.传入请求至少表明它接受compression(accept-encoding=gzip, deflate),所以我认为这很好.

我读了这个yui研究,这似乎表明iPhone每个项目将缓存25k.引用的唯一超过25k未压缩的是jquery(打包但未压缩 - 它是30k).其他一切都应该是可缓存的.在获取的页面中引用任何内容的请求都不会在服务器端触发304.

那个yui研究来自差不多一年前,我猜测只有移动野生动物园.

这是UIWebView在本机iPhone应用程序中使用.

iphone cocoa-touch caching uiwebview ios

11
推荐指数
3
解决办法
3万
查看次数

如何使用Javascript在Safari中生成按键事件?

如何以编程方式从Safari中运行的Javascript代码生成按键事件?看起来WebKit使用DOM 3级模型从Javascript创建键盘事件,而DOM 3级键盘事件模型不支持keypress事件.还有其他方法可以使用吗?

我正在寻找尽可能纯粹的Safari/WebKit DOM解决方案.我真的不想修改网页,我也不想在外部库上添加依赖项.我需要激活任何现有的按键处理程序,因此无法添加新的处理程序并直接调用它.

看起来WebKit具有在其UIEvent类中定义的keypress事件的keyCode和charCode属性,但它们是只读的.有没有办法设置这些属性?以下不起作用:

var evt = document.createEvent('UIEvents');
evt.initUIEvent('keypress', true, true, window, 0);
evt.keyCode = 114; // 'r'
evt.charCode = 114;
alert("keyCode = " + evt.keyCode + ", charCode = " + evt.charCode); // both 0
Run Code Online (Sandbox Code Playgroud)

在调用initUIEvent时设置detail属性似乎也没有任何效果.

javascript safari

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

C#web项目,所有依赖项都来自哪里?

我的ASP.NET MVC项目今天发生了最奇怪的事情.我今天下午构建了安装程序项目,突然之间,所有这些新的依赖项都出现了!呸.

Microsoft.SqlServer.BatchParser.dll
Microsoft.SqlServer.ConnectionInfo.dll
Microsoft.SqlServer.Dmf.dll
Microsoft.SqlServer.Management.Sdk.Sfc.dll
Microsoft.SqlServer.ServiceBrokerEnum.dll
Microsoft.SqlServer.Smo.dll
Microsoft.SqlServer.SqlClrProvider.dll
Microsoft.SqlServer.SqlEnum.dll
Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll
Microsoft.VisualStudio.TeamSystem.Data.dll
Microsoft.VisualStudio.TeamSystem.Data.UnitTesting.dll
Microsoft.Web.Mvc.dll
Run Code Online (Sandbox Code Playgroud)

这是正常依赖项的补充(我想要这些)...

Microsoft.Web.Mvc.dll
System.Web.Abstractions.dll
System.Web.Mvc.dll
System.Web.Routing.dll
Run Code Online (Sandbox Code Playgroud)

知道我可以做些什么来使这些新的依赖项显示出来.

asp.net asp.net-mvc

0
推荐指数
1
解决办法
2219
查看次数

你会如何象征'变化'?

由于空间问题,我必须为crud动作制作"单字符链接":

在字符中,我会象征:
'删除',字符x
'添加',+
...
你如何象征'改变'?

convention crud choice

0
推荐指数
2
解决办法
281
查看次数

你如何在Bash中区分两个管道?

如何在不使用Bash中的临时文件的情况下区分两个管道?假设您有两个命令管道:

foo | bar
baz | quux
Run Code Online (Sandbox Code Playgroud)

而且你想diff在他们的输出中找到它们.一个解决方案显然是:

foo | bar > /tmp/a
baz | quux > /tmp/b
diff /tmp/a /tmp/b
Run Code Online (Sandbox Code Playgroud)

是否可以在Bash中不使用临时文件的情况下这样做?您可以通过在其中一个管道中管道来消除一个临时文件:

foo | bar > /tmp/a
baz | quux | diff /tmp/a -
Run Code Online (Sandbox Code Playgroud)

但是你不能同时将两个管道同时传输到diff中(至少不是以任何明显的方式).是否有一些聪明的技巧涉及/dev/fd不使用临时文件这样做?

bash diff pipeline

138
推荐指数
3
解决办法
3万
查看次数

如何删除文件的最后N行?

有人可以给出一些如何从Perl文件中删除最后n行的提示吗?我有一个大约400 MB的非常大的文件,我想从中删除大约125,000个最后一行.

perl lines

3
推荐指数
2
解决办法
8646
查看次数

解析bash中的一行

我有一个文件,每行有一个条目.每行具有以下格式:

 "group:permissions:users" 
Run Code Online (Sandbox Code Playgroud)

权限和用户可以有多个由逗号分隔的值,如下所示:

 "grp1:create,delete:yo,el,ella" 
Run Code Online (Sandbox Code Playgroud)

我想要的是返回以下内容:

yo
el
ella
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止:

cat file | grep grp1 -w | cut -f3 -d: | cut -d "," -f 2
Run Code Online (Sandbox Code Playgroud)

返回yo,el.ella,如何让它每行返回一个值?

bash parsing

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

网站管理区域网址的安全名称?

主要针对Web开发人员的问题.

当您开发Web应用程序并向其添加管理区域时,您如何命名它?离开它'管理员'有点过时和不安全.

分享任何其他名词,动词,形容词或诸如此类的名词,其中包含您知道/可以想到的任何网站的标题.

naming-conventions

0
推荐指数
2
解决办法
2224
查看次数