/
PageBase.cs
70 lines (61 loc) · 1.93 KB
/
PageBase.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
using System.Web.UI;
using ServiceStack.Auth;
using ServiceStack.Caching;
using ServiceStack.Configuration;
using ServiceStack.WebHost.IntegrationTests.Tests;
namespace ServiceStack.WebHost.IntegrationTests
{
public class CustomUserSession : AuthUserSession
{
public string CustomPropety { get; set; }
public override void OnAuthenticated(IServiceBase authService, IAuthSession session, IAuthTokens tokens, System.Collections.Generic.Dictionary<string, string> authInfo)
{
base.OnAuthenticated(authService, session, tokens, authInfo);
if (session.Email == AuthTestsBase.AdminEmail)
session.Roles.Add(RoleNames.Admin);
}
}
public class PageBase : Page
{
/// <summary>
/// Typed UserSession
/// </summary>
private object userSession;
protected virtual TUserSession SessionAs<TUserSession>()
{
return (TUserSession)(userSession ?? (userSession = Cache.SessionAs<TUserSession>()));
}
protected CustomUserSession UserSession
{
get
{
return SessionAs<CustomUserSession>();
}
}
public new ICacheClient Cache
{
get { return HostContext.Resolve<ICacheClient>(); }
}
private ISessionFactory sessionFactory;
public virtual ISessionFactory SessionFactory
{
get { return sessionFactory ?? (sessionFactory = HostContext.Resolve<ISessionFactory>()) ?? new SessionFactory(Cache); }
}
/// <summary>
/// Dynamic Session Bag
/// </summary>
private ISession session;
public new ISession Session
{
get
{
return session ?? (session = SessionFactory.GetOrCreateSession());
}
}
public void ClearSession()
{
userSession = null;
this.Cache.Remove(SessionFeature.GetSessionKey());
}
}
}