小编bas*_*bas的帖子

ASP.NET MVC4会话状态存储用户名

我用MVC4创建了我的第一个超级小型webapp.到目前为止,我使用布局的东西来布局webapp并添加了一些视图控制器和一个模型来注册并允许用户登录.

用户登录/注册后,我将其用户名存储在会话中.我从会话中读取此属性以确定用户是否已登录.

这是一种不好的做法吗?我读了很多关于RESTful和无状态webapps的内容.我觉得我不应该在会话中保存任何东西.

例如

@if (string.IsNullOrEmpty(Session["User"] as string))
{
    <dl>
        <dt><a href="/Account/Register">Register</a></dt>
        <dt><a href="/Account/Login">Login</a></dt>
    </dl>
}
else
{
    <dl>
        <dt><a href="/Account/ShowAccount/@Session["User"]">@Session["User"]</a></dt>
        <dt><a href="/Account/Logout">Log out</a></dt>
    </dl>    
}
Run Code Online (Sandbox Code Playgroud)

Q1:这是一个不好的做法吗?

Q2:这是"黑客安全"吗?这样,是否容易破解当前会话并在Session ["User"]中存储值以绕过登录?

asp.net asp.net-mvc session

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

DbSet&lt;TEntity&gt;.Local 与 DbContext.ChangeTracker

在另一篇文章中,我要求澄清何时使用DbSet<TEntity>.Local. 我还没有得到答案,我认为这个问题可能包含太多信息。深入挖掘后,我可以提出一个更具体的问题。

希望你们能够解释在我的场景中选择两个选项中的哪一个。

我想实现什么目标?

  1. 我正在尝试从我的Repository. 这些实体仍处于“已添加”状态(即我尚未调用该SaveChanges方法)。我需要这个,因为我想将实体存储在一个原子操作中,所以我必须推迟调用,SaveChanges直到验证完整的模型之后。

  2. 此外,我需要符合 IQueryable 接口,因为我有使用扩展方法来延迟加载导航属性的依赖Include代码Queryable。

我尝试了什么?

过去几天发生了很多事情,但归结为以下两种不同的方法:

  • 通过以下方式检索处于“已添加”状态的实体DbSet<TEntity>.Local通过属性
  • 通过以下方式检索处于“已添加”状态的实体DbContext.ChangeTracker

可视化不同方法的代码示例

    public void AddAndRetrieveUncommittedEntityFromDbContext()
    {
        Database.SetInitializer(new DropCreateDatabaseAlways<TestContext>());
        var testContext = new TestContext();

        // Initialize the entities and store them in the repository
        var tenant = new Tenant { Name = "test", Guid = Guid.NewGuid().ToString() };
        var user = new User { Name = "bas", EmailAddress = "bas@domain.com", Password = …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework repository dbcontext

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

变量缓存

为什么在这部分代码中complete被缓存?

static void Main()
{
  bool complete = false; 
  var t = new Thread (() =>
  {
    bool toggle = false;
    while (!complete) toggle = !toggle;
  });
  t.Start();
  Thread.Sleep (1000);
  complete = true;
  t.Join();        // Blocks indefinitely
}
Run Code Online (Sandbox Code Playgroud)

但在这部分不是吗?

static void Main()
{
  bool complete = false;
  bool toggle = false; 
  var t = new Thread (() =>
  {
    while (!complete) toggle = !toggle;
  });
  t.Start();
  Thread.Sleep (1000);
  complete = true;
  t.Join();  
}
Run Code Online (Sandbox Code Playgroud)

c# multithreading

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

WPF数据绑定ProgressBar未显示进度

让ProgressBar正常工作我遇到了麻烦.

XAML:

    <ProgressBar x:Name="ProgressBar" Value="{Binding Progress, UpdateSourceTrigger=PropertyChanged}" HorizontalAlignment="Left" Height="37" Margin="10,35,0,0" VerticalAlignment="Top" Width="590"/>
Run Code Online (Sandbox Code Playgroud)

代码背后:

    ProgressBar.DataContext = progressModel;
Run Code Online (Sandbox Code Playgroud)

IProgressModel:

public interface IProgressModel
{
    double Minimum { get; set; }
    double Maximum { get; set; }
    double Progress { get; }
}
Run Code Online (Sandbox Code Playgroud)

执行:

    private void WorkerOnDoWork(object sender, DoWorkEventArgs doWorkEventArgs)
    {
        Minimum = 0;
        Maximum = RenamableFiles.Count;

        var i = 0;
        foreach (var renamableFile in RenamableFiles)
        {
            var oldFilename = ReCreateOldFileName(renamableFile);
            var renameProposalFilename = CreateNewFileName(renamableFile);

            if (oldFilename != null && renameProposalFilename != null && …
Run Code Online (Sandbox Code Playgroud)

c# data-binding wpf progress-bar

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

NUnit测试启动WPF应用,但WPF每个AppDomain只允许一个应用

我正在编写启动我的 WPF 应用程序的验收测试,如下所示:

    [TestCase("279")]
    [TestCase("281")]
    [TestCase("289")]
    public void StartAndInitializeSystemControl(string machineNumber)
    {
        application = new App();
        systemControl = new SystemControl(application, machineNumber);
        application.Dispatcher.BeginInvoke(DispatcherPriority.Loaded, new Action(() => ApplicationOnActivated(null, null)));
        application.Run();
        Assert.Pass();
    }
Run Code Online (Sandbox Code Playgroud)

我省略了不相关的部分。我在上面的代码中做的是启动 WPF App,启动应用程序并Application.Run()执行某些内容并验证某些内容。一切都很好,工作正常。当我开始添加测试用例时,事情开始向南。当我添加测试用例时,我为每个 AppDomain 启动了多个 WPF 应用程序,这是不允许的。

System.InvalidOperationException:无法在同一个 AppDomain 中创建多个 System.Windows.Application 实例。

我该如何解决这个问题?我可以从 AppDomain 中“清除”启动的应用程序吗?我可以为我开始的每个测试启动不同的 AppDomain 吗?

c# wpf nunit appdomain

5
推荐指数
0
解决办法
938
查看次数

C#中的高分辨率计时器

是否存在高分辨率计时器,每次计时器过去时都会引发事件,就像System.Timer课程一样?Elapse每隔ms 我需要一个高分辨率计时器.

我一直在发帖说明秒表可以测量高分辨率,但我不想测量时间,我想创建一个1毫秒的间隔.

在.NET中有什么东西,还是我要编写自己的高分辨率计时器?

c# timer high-resolution

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

arm-none-eabi 工具链从源代码编译

对于我当前的项目,我们遇到了一个问题,如果我们能够从源代码重新编译arm工具链(gcc、c++stdlib、nanolibc等),我们就可以解决这个问题。

我可以从arm网站下载源代码的快照。我找到了一个博客,但它已经过时了。无论如何,他引用的 pdf 不再存在于该快照中。

浏览提取的存档,我似乎找不到任何如何编译的说明。

在哪里可以找到如何从源代码编译 arm-none-eabi 的文档?

gcc arm

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

Android 模拟相机

是否可以模拟 Android Camera 类?

@Override
public void setUp() {
    _camera = Mockito.mock(Camera.class);
}
Run Code Online (Sandbox Code Playgroud)

无法生成模拟(ExceptionInitializerError在 Mockito's 中createProxyClass)。

我是否应该围绕Camera(不是我最喜欢的解决方案,真的只想模拟课程......)创建某种包装器?

或者,我应该使用与 Mockito 不同的模拟库吗?

希望有人能指出我正确的方向。

完整的堆栈跟踪 ExceptionInitializerError

java.lang.ExceptionInInitializerError
at org.mockito.internal.creation.jmock.ClassImposterizer.createProxyClass(ClassImposterizer.java:85)
at org.mockito.internal.creation.jmock.ClassImposterizer.imposterise(ClassImposterizer.java:62)
at org.mockito.internal.creation.jmock.ClassImposterizer.imposterise(ClassImposterizer.java:56)
at org.mockito.internal.creation.CglibMockMaker.createMock(CglibMockMaker.java:23)
at org.mockito.internal.util.MockUtil.createMock(MockUtil.java:26)
at org.mockito.internal.MockitoCore.mock(MockitoCore.java:51)
at org.mockito.Mockito.mock(Mockito.java:1243)
at org.mockito.Mockito.mock(Mockito.java:1120)
at com.cleancode.lifesaver.flashlight.test.FlashLightTests.setUp(FlashLightTests.java:20)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:190)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:175)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:555)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1661)
Caused by: java.lang.VerifyError: org/mockito/cglib/core/ReflectUtils
at org.mockito.cglib.core.KeyFactory$Generator.generateClass(KeyFactory.java:167)
at org.mockito.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25)
at org.mockito.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:217)
at org.mockito.cglib.core.KeyFactory$Generator.create(KeyFactory.java:145)
at org.mockito.cglib.core.KeyFactory.create(KeyFactory.java:117)
at org.mockito.cglib.core.KeyFactory.create(KeyFactory.java:109)
at org.mockito.cglib.core.KeyFactory.create(KeyFactory.java:105)
at org.mockito.cglib.proxy.Enhancer.<clinit>(Enhancer.java:70)
... 18 more
Run Code Online (Sandbox Code Playgroud)

java camera android mocking mockito

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

找不到PowerMock类

出于某种原因,我没有按照一个非常简单的PowerMock示例.

我包含powermock-mockito-1.5.1-full在我的类路径中,并尝试测试公共最终方法(遵循此示例).

由于某种原因,我无法进行PowerMock课程导入.

import org.junit.*;
import org.junit.runner.RunWith;
import org.mockito.Mockito;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import com.cleancode.lifesaver.camera.*;

@RunWith(PowerMockRunner.class)
@PrepareForTest(android.hardware.Camera.class)
public class CameraTests {

    private android.hardware.Camera _cameraMock;

    @Before
    public void setUp() {
        _cameraMock = PowerMockito.mock(android.hardware.Camera.class);
    }

    @Test 
    public void releaseCamera() {
        ICamera camera = new Camera(_cameraMock);

        // Compile error: PowerMock can't be resolved       
        PowerMock.replay(_cameraMock);
        // I also tried PowerMockito.replay(_cameraMock) but that also doesn't exist.

        camera.release();

        Mockito.verify(_cameraMock).release();
    }
}
Run Code Online (Sandbox Code Playgroud)

正如评论所解释的那样,PowerMock无法从power mock jar导入类.

这感觉就像一个愚蠢的问题,但我真的在互联网上找不到任何东西.

我应该在哪里找到静态类 …

java junit mockito powermock

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

安全的asp net core Rest api(带有keycloak)

我正在努力,真的,我正在努力。但我无法理解 ASP NET Core 中的授权概念。

我有:

  • 一个 keycloak docker 容器
  • ASP NET core REST API(在 docker 中运行)
  • 一个 Angular Front 应用程序(在 docker 中运行)

什么有效:

  • 角度密钥斗篷身份验证
  • REST API 中的 JWT 令牌验证

什么不起作用:

  • 我对用该[Authorize]属性修饰的任何控制器进行的任何调用。

我读过这个、这个、这个、我能找到的关于 asp net core 身份验证/授权的每个 MSDN 页面,并且我尝试了许多不同的 nuget 包来完成工作。但什么也没有给出。

使用Keycloak.AuthServices.Authentication和Keycloak.AuthServices.Authorization实现了大部分目标,但即使如此,我也陷入了我真正想要授权的部分。无论我尝试什么,我都会不断收到[Authorize]修饰调用的 401 响应。

我的 keycloak 配置非常简单:

  • 一个领域
  • 客户端(openID)
  • 提供商(谷歌)

似乎做了它必须做的事情,我可以在我的角度前端应用程序中进行身份验证。

我设置的角度应用程序使用keycloak-angular它来将承载 JWT 复制到我向 REST API 后端发出的每个请求的 https 标头中。

在此输入图像描述

在我的 ASP NET core 后端中,我设置了 Keycloak.AuthServices …

c# authorization jwt keycloak asp.net-core

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