标签: stateless-session

无状态NHibernate会话的插入很慢

我正在努力改进NHibernate Insert性能已经有几天了.

我在许多帖子(例如这篇文章)中读过,无状态会话可以插入每秒1000~2000条记录....但是它可以插入1243条记录的最佳时间对我来说超过9秒:

var sessionFactory = new NHibernateConfiguration().CreateSessionFactory();
using (IStatelessSession statelessSession = sessionFactory.OpenStatelessSession())
{
   statelessSession.SetBatchSize(adjustmentValues.Count);

   foreach (var adj in adjustmentValues)
      statelessSession.Insert(adj);
}
Run Code Online (Sandbox Code Playgroud)

班级 :

public partial class AdjustmentValue : PersistentObject, IFinancialValue
{
    public virtual double Amount { get; set; }
    public virtual bool HasManualValue { get; set; }
    public virtual bool HasScaleValue { get; set; }
    public virtual string Formula { get; set; }
    public virtual DateTime IssueDate { get; set; }

    public virtual CompanyTopic CompanyTopic …
Run Code Online (Sandbox Code Playgroud)

c# nhibernate bulkinsert fluent-nhibernate stateless-session

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

在不是100%AJAX的Ajax应用程序中使用HTTP身份验证的最佳方法是什么

我有一个标准的HTML登录页面,我宁愿使用它而不是浏览器提供的标准HTTP身份验证弹出窗口.今天,我在登录后使用会话cookie跟踪会话,但我希望无状态并且每次都通过HTTP身份验证.我正在尝试的Web服务已经支持这一点,所以这是一个仅限浏览器的问题.

在jQuery中添加身份验证凭据是微不足道的,但我不知道如何保留它们.如果您从登录页面(jsp)转到主页(另一个jsp),您显然不会保留登录页面中的用户名和密码字段.我知道如果您从弹出窗口输入它们,某些浏览器将存储您的HTTP身份验证凭据,但我不知道它们是否在使用XHRRequest时被存储.如果他们这样做,浏览器之间是否有很多一致性?

此外,用户也需要能够"退出"应用程序.如果浏览器存储身份验证凭据,是否有办法使用JavaScript清除它们.

我觉得我不能成为第一个试图解决这个问题的人.是否有一些jQuery插件或已经处理过的东西?或者根本不可能做我想做的事情?

ajax jquery xmlhttprequest http-authentication stateless-session

10
推荐指数
1
解决办法
5243
查看次数

如何将StatelessSession与Spring Data JPA和Hibernate一起使用?

我正在使用Spring + Spring Data JPA和Hibernate,我需要执行一些大而昂贵的数据库操作.

我如何使用a StatelessSession来执行这些操作?

spring hibernate jpa stateless-session spring-data-jpa

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

没有会话的Spring Boot基本认证(无状态会话)

我已将基本身份验证配置为Spring-Boot应用程序.一切都是Java Config,没有xml.

import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        // Authenticate username -> admin, password -> admin & set role as "ROLE_USER"
        auth.inMemoryAuthentication().withUser("admin").password("admin").roles("USER");
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {

        http.authorizeRequests()
            .antMatchers("/login").permitAll()
            // All Requests should be Authenticated
            .anyRequest().authenticated()
            .and()
            // Enable Basic Authentication
            .httpBasic()
            .and()
            .formLogin()
                .loginPage("/login")
                .defaultSuccessUrl("/main", true)
                .loginProcessingUrl("/session")
                .usernameParameter("Username").passwordParameter("Password")
            .and()
            .logout().logoutUrl("/logout").permitAll()
            .and().csrf().disable();
    }

}
Run Code Online (Sandbox Code Playgroud)

它配置为基本身份验证和普通表单登录.当我在Firefox上测试Rest-Client的基本身份验证时,我可以访问安全URL"/ main".但在响应标题中,我得到了 …

java spring stateless-session spring-boot

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

使用NHibernate StatelessSession级联集合

HasMany使用无状态会话批量插入包含其他实体集合(映射)的实体的正确方法是什么?

例如父类映射如下:

class ParentMap : ClassMap<Parent>
{
    public ParentMap()
    {
        Id(x => x.Id)
           .GeneratedBy.Increment();

        HasMany(x => x.ChildNodes)
           .KeyColumns.Add("Parent_id")
           .Cascade.All();
    }  
}
Run Code Online (Sandbox Code Playgroud)

无状态会话忽略级联选项,因此子节点不会自动保留.我可以自己遍历集合,但后来我无法设置关系,因为Parent_id列不存在作为我可以写入的属性.

我错过了什么吗?

c# nhibernate cascade fluent-nhibernate stateless-session

7
推荐指数
1
解决办法
1918
查看次数

没有会话的HTTP请求签名

我正在考虑一个休息网络服务,确保发送给他的每个请求:

  • 该请求是由声称它的用户生成的;
  • 该请求未被其他人修改(uri/method/content/date);
  • 对于GET请求,应该可以生成一个包含足够信息的URI,以检查签名并设置过期日期.这样,用户可以在具有生成的URI的资源上将临时READ权限委派给协作者一段有限的时间.

客户端使用id和基于密码的内容签名进行身份验证.

应该没有会话,所以服务器状态!服务器和客户端共享密钥(密码)

在考虑它并与一些非常好的人交谈之后,似乎没有任何休息服务可以做到这一点,就像它应该是我的用例一样简单.(HTTP摘要和OAuth可以在服务器状态下执行此操作并且非常繁琐)

所以我想象一个,我问你的伟大评论它应该如何设计(我将发布它OpenSource和希望它可以帮助其他人).

该服务使用自定义"Content-signature"标头来存储凭据.经过身份验证的请求应包含此标头:

Content-signature: <METHOD>-<USERID>-<SIGNATURE>

<METHOD> is the sign method used, in our case SRAS.
<USERID> stands for the user ID mentioned earlier.
<SIGNATURE> = SHA2(SHA2(<PASSWORD>):SHA2(<REQUEST_HASH>));
<REQUEST_HASH> = <HTTP_METHOD>\n
                 <HTTP_URI>\n
                 <REQUEST_DATE>\n
                 <BODY_CONTENT>;
Run Code Online (Sandbox Code Playgroud)

创建请求10分钟后,请求将失效.

例如,典型的HTTP REQUEST将是:

POST /ressource HTTP/1.1
Host: www.elphia.fr
Date: Sun, 06 Nov 1994 08:49:37 GMT
Content-signature: SRAS-62ABCD651FD52614BC42FD-760FA9826BC654BC42FD

{ test: "yes" }
Run Code Online (Sandbox Code Playgroud)

服务器将回答:

401 Unauthorized
Run Code Online (Sandbox Code Playgroud)

要么

200 OK
Run Code Online (Sandbox Code Playgroud)

变量将是:

<USERID> = 62ABCD651FD52614BC42FD
<REQUEST_HASH> = POST\n
                 /ressource\n
                 Sun, 06 Nov 1994 08:49:37 GMT\n
                 { …
Run Code Online (Sandbox Code Playgroud)

rest web-services restful-authentication http stateless-session

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

无状态会话线程安全吗?

我知道ISession不是线程安全的.IStatelssSession也不是线程安全的吗?我猜答案是否定的.我做了一个快速搜索,但没有找到这方面的参考.

谢谢.

nhibernate session multithreading thread-safety stateless-session

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

当我的会话创建策略设置为 STATELESS 时,为什么 Spring Security 的 SessionManagementFilter 会运行?

我有一个使用 Spring Security 4.0.1.RELEASE 的基于 J2EE REST 的 Web 应用程序。我正在使用基于 Java 的配置配置 Spring Security,并将会话创建策略设置为 STATELESS,如下所示:

@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(secureEnabled=true, prePostEnabled=true, jsr250Enabled=true, order=1)
public class DefaultSecurityBeansConfig extends WebSecurityConfigurerAdapter {
    // ...
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and()...; // additional config omitted for brevity
        // ...
    }
    // ...
}
Run Code Online (Sandbox Code Playgroud)

在阅读了这篇关于 Spring Security 会话管理的文章后,我认为SessionManagementFilter过滤器应该运行在 Spring Security 的过滤器链中。但它绝对是。我可以在那个类中设置断点doFilter方法中,它会在对服务器的每个请求上运行。

这里发生了什么?此过滤器正在运行的事实导致我的应用程序中出现其他意外行为,我认为这些行为已被配置掉。

谢谢。

java session spring spring-security stateless-session

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