summaryrefslogtreecommitdiffstats
path: root/projecttemplates/MvcRelyingParty/Code/FormsAuthenticationService.cs
diff options
context:
space:
mode:
Diffstat (limited to 'projecttemplates/MvcRelyingParty/Code/FormsAuthenticationService.cs')
-rw-r--r--projecttemplates/MvcRelyingParty/Code/FormsAuthenticationService.cs36
1 files changed, 36 insertions, 0 deletions
diff --git a/projecttemplates/MvcRelyingParty/Code/FormsAuthenticationService.cs b/projecttemplates/MvcRelyingParty/Code/FormsAuthenticationService.cs
new file mode 100644
index 0000000..471c3250
--- /dev/null
+++ b/projecttemplates/MvcRelyingParty/Code/FormsAuthenticationService.cs
@@ -0,0 +1,36 @@
+namespace MvcRelyingParty {
+ using System;
+ using System.Collections.Generic;
+ using System.Linq;
+ using System.Web;
+ using System.Web.Security;
+ using DotNetOpenAuth.OpenId;
+
+ /// <summary>
+ /// Forms authentication interface to facilitate login/logout functionality.
+ /// </summary>
+ /// <remarks>
+ /// The FormsAuthentication type is sealed and contains static members, so it is difficult to
+ /// unit test code that calls its members. The interface and helper class below demonstrate
+ /// how to create an abstract wrapper around such a type in order to make the AccountController
+ /// code unit testable.
+ /// </remarks>
+ public interface IFormsAuthentication {
+ void SignIn(Identifier claimedIdentifier, bool createPersistentCookie);
+
+ void SignOut();
+ }
+
+ /// <summary>
+ /// The standard FormsAuthentication behavior to use for the live site.
+ /// </summary>
+ public class FormsAuthenticationService : IFormsAuthentication {
+ public void SignIn(Identifier claimedIdentifier, bool createPersistentCookie) {
+ FormsAuthentication.SetAuthCookie(claimedIdentifier, createPersistentCookie);
+ }
+
+ public void SignOut() {
+ FormsAuthentication.SignOut();
+ }
+ }
+}