本文整理汇总了C#中Nancy.Session.CookieBasedSessions类的典型用法代码示例。如果您正苦于以下问题:C# CookieBasedSessions类的具体用法?C# CookieBasedSessions怎么用?C# CookieBasedSessions使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
CookieBasedSessions类属于Nancy.Session命名空间,在下文中一共展示了CookieBasedSessions类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: CookieBasedSessionsFixture
public CookieBasedSessionsFixture()
{
this.fakeEncryptionProvider = A.Fake<IEncryptionProvider>();
this.fakeHmacProvider = A.Fake<IHmacProvider>();
this.cookieStore = new CookieBasedSessions(this.fakeEncryptionProvider, this.fakeHmacProvider, new Fakes.FakeSessionObjectFormatter());
this.rijndaelEncryptionProvider = new RijndaelEncryptionProvider(new PassphraseKeyGenerator("password"));
this.defaultHmacProvider = new DefaultHmacProvider(new PassphraseKeyGenerator("anotherpassword"));
}
示例2: CookieBasedSessionsFixture
public CookieBasedSessionsFixture()
{
this.fakeEncryptionProvider = A.Fake<IEncryptionProvider>();
this.fakeHmacProvider = A.Fake<IHmacProvider>();
this.cookieStore = new CookieBasedSessions(this.fakeEncryptionProvider, this.fakeHmacProvider, new Fakes.FakeObjectSerializer());
this.rijndaelEncryptionProvider = new RijndaelEncryptionProvider(new PassphraseKeyGenerator("password", new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 }, 1000));
this.defaultHmacProvider = new DefaultHmacProvider(new PassphraseKeyGenerator("anotherpassword", new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 }, 1000));
}
示例3: Enable
/// <summary>
/// Initialise and add cookie based session hooks to the application pipeine
/// </summary>
/// <param name="applicationPipelines">Application pipelines</param>
/// <param name="cryptographyConfiguration">Cryptography configuration</param>
/// <returns>Formatter selector for choosing a non-default serializer</returns>
public static IObjectSerializerSelector Enable(IApplicationPipelines applicationPipelines, CryptographyConfiguration cryptographyConfiguration)
{
var sessionStore = new CookieBasedSessions(cryptographyConfiguration.EncryptionProvider, cryptographyConfiguration.HmacProvider, new DefaultObjectSerializer());
applicationPipelines.BeforeRequest.AddItemToEndOfPipeline(ctx => LoadSession(ctx, sessionStore));
applicationPipelines.AfterRequest.AddItemToEndOfPipeline(ctx => SaveSession(ctx, sessionStore));
return sessionStore;
}
示例4: Enable
/// <summary>
/// Initialise and add cookie based session hooks to the application pipeine
/// </summary>
/// <param name="applicationPipelines">Application pipelines</param>
/// <param name="encryptionProvider">Encryption provider for encrypting cookies</param>
/// <param name="passPhrase">Encryption pass phrase</param>
/// <param name="salt">Encryption salt</param>
/// <returns>Formatter selector for choosing a non-default formatter</returns>
public static IFormatterSelector Enable(IApplicationPipelines applicationPipelines, IEncryptionProvider encryptionProvider, string passPhrase, string salt)
{
var sessionStore = new CookieBasedSessions(encryptionProvider, passPhrase, salt, new DefaultSessionObjectFormatter());
applicationPipelines.BeforeRequest.AddItemToEndOfPipeline(ctx => LoadSession(ctx, sessionStore));
applicationPipelines.AfterRequest.AddItemToEndOfPipeline(ctx => SaveSession(ctx, sessionStore));
return sessionStore;
}
示例5: Enable
/// <summary>
/// Initialise and add cookie based session hooks to the application pipeline
/// </summary>
/// <param name="pipelines">Application pipelines</param>
/// <param name="configuration">Cookie based sessions configuration.</param>
/// <returns>Formatter selector for choosing a non-default serializer</returns>
public static IObjectSerializerSelector Enable(IPipelines pipelines, CookieBasedSessionsConfiguration configuration)
{
if (pipelines == null)
{
throw new ArgumentNullException("pipelines");
}
var sessionStore = new CookieBasedSessions(configuration);
pipelines.BeforeRequest.AddItemToStartOfPipeline(ctx => LoadSession(ctx, sessionStore));
pipelines.AfterRequest.AddItemToEndOfPipeline(ctx => SaveSession(ctx, sessionStore));
return sessionStore;
}
示例6: Should_load_valid_test_data
public void Should_load_valid_test_data()
{
var inputValue = ValidHmac + ValidData;
inputValue = HttpUtility.UrlEncode(inputValue);
var store = new CookieBasedSessions(this.rijndaelEncryptionProvider, this.defaultHmacProvider, this.defaultObjectSerializer);
var request = new Request("GET", "/", "http");
request.Cookies.Add(store.CookieName, inputValue);
var result = store.Load(request);
result.Count.ShouldEqual(1);
result.First().Value.ShouldBeOfType(typeof(DefaultSessionObjectFormatterFixture.Payload));
}
示例7: Should_be_able_to_load_an_object_previously_saved_to_session
public void Should_be_able_to_load_an_object_previously_saved_to_session()
{
var response = new Response();
var session = new Session(new Dictionary<string, object>());
var payload = new DefaultSessionObjectFormatterFixture.Payload(27, true, "Test string");
var store = new CookieBasedSessions(this.rijndaelEncryptionProvider, this.defaultHmacProvider, this.defaultObjectSerializer);
session["testObject"] = payload;
store.Save(session, response);
var request = new Request("GET", "/", "http");
request.Cookies.Add(Helpers.HttpUtility.UrlEncode(response.Cookies.First().Name), Helpers.HttpUtility.UrlEncode(response.Cookies.First().Value));
var result = store.Load(request);
result["testObject"].ShouldEqual(payload);
}
示例8: Should_be_able_to_save_a_complex_object_to_session
public void Should_be_able_to_save_a_complex_object_to_session()
{
var response = new Response();
var session = new Session(new Dictionary<string, object>());
var payload = new DefaultSessionObjectFormatterFixture.Payload(27, true, "Test string");
var store = new CookieBasedSessions(this.rijndaelEncryptionProvider, this.defaultHmacProvider, this.defaultObjectSerializer);
session["testObject"] = payload;
store.Save(session, response);
response.Cookies.Count.ShouldEqual(1);
var cookie = response.Cookies.First();
cookie.Name.ShouldEqual(store.CookieName);
cookie.Value.ShouldNotBeNull();
cookie.Value.ShouldNotBeEmpty();
}
示例9: Should_call_the_formatter_on_save
public void Should_call_the_formatter_on_save()
{
var response = new Response();
var session = new Session(new Dictionary<string, object>());
session["key1"] = "value1";
var fakeFormatter = A.Fake<IObjectSerializer>();
var store = new CookieBasedSessions(this.fakeEncryptionProvider, this.fakeHmacProvider, fakeFormatter);
store.Save(session, response);
A.CallTo(() => fakeFormatter.Serialize("value1")).MustHaveHappened(Repeated.Exactly.Once);
}
示例10: Should_call_formatter_on_load
public void Should_call_formatter_on_load()
{
var fakeFormatter = A.Fake<IObjectSerializer>();
A.CallTo(() => this.fakeEncryptionProvider.Decrypt("encryptedkey1=value1")).Returns("key1=value1;");
var store = new CookieBasedSessions(this.fakeEncryptionProvider, this.fakeHmacProvider, fakeFormatter);
var request = CreateRequest("encryptedkey1=value1", false);
store.Load(request);
A.CallTo(() => fakeFormatter.Deserialize("value1")).MustHaveHappened(Repeated.Exactly.Once);
}
示例11: Should_use_CookieName_when_config_provides_cookiename_value
public void Should_use_CookieName_when_config_provides_cookiename_value()
{
//Given
var cryptoConfig = new CryptographyConfiguration(this.fakeEncryptionProvider, this.fakeHmacProvider);
var storeConfig = new CookieBasedSessionsConfiguration(cryptoConfig)
{
CookieName = "NamedCookie",
Serializer = this.fakeObjectSerializer
};
var store = new CookieBasedSessions(storeConfig);
//When
var response = new Response();
var session = new Session(new Dictionary<string, object>
{
{"key1", "val1"},
});
session["key2"] = "val2";
store.Save(session, response);
//Then
response.Cookies.ShouldHave(c => c.Name == storeConfig.CookieName);
}
示例12: Should_return_blank_session_if_hmac_changed
public void Should_return_blank_session_if_hmac_changed()
{
var inputValue = "b" + ValidHmac.Substring(1) + ValidData;
inputValue = HttpUtility.UrlEncode(inputValue);
var store = new CookieBasedSessions(this.rijndaelEncryptionProvider, this.defaultHmacProvider, new DefaultObjectSerializer());
var request = new Request("GET", "/", "http");
request.Cookies.Add(CookieBasedSessions.GetCookieName(), inputValue);
var result = store.Load(request);
result.Count.ShouldEqual(0);
}
示例13: SaveSession
/// <summary>
/// Saves the request session into the response
/// </summary>
/// <param name="context">Nancy context</param>
/// <param name="sessionStore">Session store</param>
private static void SaveSession(NancyContext context, CookieBasedSessions sessionStore)
{
sessionStore.Save(context.Request.Session, context.Response);
}
示例14: LoadSession
/// <summary>
/// Loads the request session
/// </summary>
/// <param name="context">Nancy context</param>
/// <param name="sessionStore">Session store</param>
/// <returns>Always returns null</returns>
private static Response LoadSession(NancyContext context, CookieBasedSessions sessionStore)
{
if (context.Request == null)
{
return null;
}
context.Request.Session = sessionStore.Load(context.Request);
return null;
}
示例15: Should_return_blank_session_if_encrypted_data_modified
public void Should_return_blank_session_if_encrypted_data_modified()
{
var inputValue = ValidHmac + ValidData.Substring(0, ValidData.Length - 1) + "Z";
inputValue = HttpUtility.UrlEncode(inputValue);
var store = new CookieBasedSessions(this.rijndaelEncryptionProvider, this.defaultHmacProvider, this.defaultObjectSerializer);
var request = new Request("GET", "/", "http");
request.Cookies.Add(store.CookieName, inputValue);
var result = store.Load(request);
result.Count.ShouldEqual(0);
}