小编Ech*_*ban的帖子

为Bearer授权添加额外的逻辑

我正在尝试实施OWIN持有人令牌授权,并基于这篇文章.但是,在承载令牌中我需要一条额外的信息,我不知道如何实现.

在我的应用程序中,我需要从持有者令牌中推断出用户信息(比如userid).这很重要,因为我不希望授权用户能够充当其他用户.这可行吗?它甚至是正确的方法吗?如果用户标识是guid,那么这很简单.在这种情况下,它是一个整数.授权用户可能只是通过猜测/暴力来冒充他人,这是不可接受的.

看看这段代码:

public void ConfigureOAuth(IAppBuilder app)
{
    OAuthAuthorizationServerOptions OAuthServerOptions = new OAuthAuthorizationServerOptions()
    {
        AllowInsecureHttp = true,
        TokenEndpointPath = new PathString("/token"),
        AccessTokenExpireTimeSpan = TimeSpan.FromDays(1),
        Provider = new SimpleAuthorizationServerProvider()
    };

    // Token Generation
    app.UseOAuthAuthorizationServer(OAuthServerOptions);
    app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions());
}

public class SimpleAuthorizationServerProvider : OAuthAuthorizationServerProvider
{
    public override async Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context)
    {
        context.Validated();
    }

    public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
    {
        context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" });

        using (AuthRepository _repo = new AuthRepository())
        {
            IdentityUser user = await _repo.FindUser(context.UserName, context.Password);

            if (user …
Run Code Online (Sandbox Code Playgroud)

c# oauth-2.0 asp.net-web-api owin bearer-token

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

在MVVM WPF中使用工作单元设计模式/ NHibernate会话

我想我陷入了分析的瘫痪状态.请帮忙!

我目前有一个项目

在我的案例中,工作单元实现一次支持一个NHibernate会话.我当时认为这是有道理的; 它隐藏了ViewModel中NHibernate会话的内部工作方式.

现在,根据Oren Eini(Ayende)的说法:http://msdn.microsoft.com/en-us/magazine/ee819139.aspx

他说服观众在处理与presenter/viewmodel相关联的视图时应创建/处理NHibernate会话.他提出了为什么每个Windows应用程序不需要一个会话,也不希望每个事务创建/处理会话的问题.遗憾的是,这会产生一个问题,因为我的UI可以轻松地在应用程序中显示10个以上的视图/视图模型.他正在使用MVP策略,但他的建议是否转化为MVVM?

这是否意味着我应该废弃工作单元并让viewmodel直接创建NHibernate会话?WPF应用程序一次只能有一个工作会话吗?如果这是真的,我什么时候应该创建/处置NHibernate会话?

而且我还没有考虑过NHibernate无状态会话如何适应这一切!我的大脑会爆炸.请帮忙!

更新:

我在Rhino Tools中找到了Ayende的工作单元实现.我发现他的实施与我所做的实施之间存在显着差异.他绝对支持多次会议.经过进一步的研究,我认为我最好做以下事情:

  • 废弃我对工作单元的实施
  • 辞职直接从viewmodel使用NHibernate的ISession和IStatelessSession对象.虽然在我看来这并不理想,但我已经花了太多时间在工作单元上,而且它并没有形成它的本质.必须在某个时候申请KISS和YAGNI.我至少可以对Ayende的文章和其他一些人指出直接使用它们的事实感到安慰.
  • 如果我真的不想公开ISession,我总是可以使用Castle.ActiveRecord,但我认为没有必要.
  • 我可以重新使用会话工厂代码,因此工作单元实现并不是完全浪费.
  • 重构我的存储库以允许注入StatelessSession和Session,并使用无状态(如果可用):否则使用常规会话.

毕竟,我可以应用每个viewmodel打开一个会话/无状态会话的策略,并且当处理视图时,具有viewmodel flush/dispose会话/无状态会话.

听起来像是个计划?

nhibernate wpf session mvvm unit-of-work

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

我怎样才能让持怀疑态度的同事相信.Net中的正确命名空间?

我的团队正在开发一个转换项目,将一个产品(但有很多方面)从VB6转换为.Net(我们有超过~300k的LOC).在我加入之前,决定无论程序集的位置或文件夹结构如何,所有类/结构都将位于一个名称空间中:

.

他们甚至可以更改自动生成的应用程序设置设计器代码,资源设计器代码等,以强制统一.我如何说服他们命名空间使用是好的?命名空间的正确用法是什么,有哪些优点和缺点?我想我很难理解为什么我的同事会经历如此多的麻烦来节省一些使用线路.任何外部的,有信誉的参考支持您的论点将非常感激.请帮忙!

.net namespaces

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

如何在另一个程序集中获取内部静态类的类?

我在Assembly A中有一个C类,如下所示:

internal class C
{
  internal static string About_Name {
      get { return "text"; }
  ...
}
Run Code Online (Sandbox Code Playgroud)

我有大约20个这样的静态属性.有没有办法,在外部程序集中,不使用友元汇编属性(仅限.Net反射),获取类C所以我可以调用任何静态字符串属性,如下所示:

Class C = <some .Net reflection code>;
string expected = C.About_Name;
Run Code Online (Sandbox Code Playgroud)

如果这是不可能的,直接获取字符串属性值的.Net反射代码就足够了,但并不理想.

.net reflection

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

XSLT组半小时

鉴于此XML:

<root>
  <row>
    <time>08:00</time>
    <sales>800</sales>
  </row>
  <row>
    <time>08:15</time>
    <sales>815</sales>
  </row>
  <row>
    <time>08:30</time>
    <sales>830</sales>
  </row>
  <row>
    <time>08:45</time>
    <sales>845</sales>
  </row>
  <row>
    <time>11:00</time>
    <sales>1100</sales>
  </row>
  <row>
    <time>11:45</time>
    <sales>1145</sales>
  </row>
  <row>
    <time>14:15</time>
    <sales>1415</sales>
  </row>
  <row>
    <time>14:30</time>
    <sales>1430</sales>
  </row>
</root>
Run Code Online (Sandbox Code Playgroud)

我试图通过30分钟的间隔总结销售来找到一种方法来进行XSLT转换.我可以使用MUENCHIAN方法按小时间隔60分钟进行汇总,但我不能使用它30分钟,因为我需要一个自定义函数来执行此操作(但我不能使用XSLT 2.0,也不能使用.Net的自定义函数).请帮忙!

预期的输出是这样的:

30 minute
08:00 $1600  
08:30 $1675 
11:00 $1100 
11:30 $1145 
14:00 $1415 
14:30 $1430 
Run Code Online (Sandbox Code Playgroud)

xslt grouping muenchian-grouping

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

适用于脚本/开发需求的最佳Sql Server IDE

我正在寻找最好的Sql Server IDE来满足脚本/开发需求.必须有:

  • 用于创建复杂查询的可视GUI
  • 所有数据库对象的智能感知
  • 自动格式化功能,可将SQL脚本格式化为特定格式/编码标准.
  • SELECT Sql输出为.xls,.txt,并带有分隔符/格式的自定义选项

成本不是问题.当你提出建议时,你能否说出你喜欢它的原因,以及你以前尝试过的其他IDE.谢谢.

sql-server ide

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

自动映射器在MVVM应用程序中使用

我正在构建一个MVVM应用程序.模型/实体(我正在使用NHibernate)已经完成,我正在考虑使用AutoMapper在ViewModel和Model之间进行映射.

然而,这个条款吓跑了我的jebus :(来自http://www.lostechies.com/blogs/jimmy_bogard/archive/2009/01/22/automapper-the-object-object-mapper.aspx)

AutoMapper强制对每个类型映射(源/目标对)强制执行,目标类型上的所有属性都与源类型上的某些属性匹配

对我来说,逻辑上的选择是从模型映射到viewmodel,(我会让viewmodel手动分配给模型),但引用基本上会杀死这个想法,因为viewmodel肯定会有模型上不存在的属性.

你是如何在MVVM应用程序中使用Automapper的?请帮忙!

model mvvm automapper

3
推荐指数
1
解决办法
3503
查看次数

二进制反序列化的问题 - 有人可以帮忙吗?

我和这篇文章有同样的问题:

http://social.microsoft.com/Forums/en-US/netfxbcl/thread/10027dd8-da47-4691-91a6-a8b89a7f514a

有人知道可能的答案/解决方案吗?有趣的是,我的可序列化类(二进制序列化)中有2个集合.一个是List,一个是Dictionary.List集合正常,Dictionary在[Deserialized]方法上返回0作为Count属性.

更奇怪的是,在反序列化之后,使用类对象是可以的.对Dictionary集合的所有单元测试都通过.让我感到沮丧,因为我想在反序列化之后立即使用Dictionary对象,但我不能因为这个奇怪的错误.有人可以帮忙吗?

c# serialization dictionary

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