In my application, I want to redirect the authorized user to update their profile page until they have provided required information. If they update profile, then the
I've taken this code and added some of my own changes, namely to check if the currently logged in user has a session state on the server, they're not as expensive as they used to be!
public class CustomAuthorizeAttribute : AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
var authorized = base.AuthorizeCore(httpContext);
if (!authorized && !Membership.isAuthenticated())
{
// The user is not authorized => no need to go any further
return false;
}
return true;
}
}
public class Membership
{
public static SystemUserDTO GetCurrentUser()
{
// create a system user instance
SystemUserDTO user = null;
try
{
user = (SystemUserDTO)HttpContext.Current.Session["CurrentUser"];
}
catch (Exception ex)
{
// stores message into an event log
Utilities.Log(ex.Message, System.Diagnostics.EventLogEntryType.Warning);
}
return user;
}
public static bool isAuthenticated()
{
bool loggedIn = HttpContext.Current.User.Identity.IsAuthenticated;
bool hasSession = (GetCurrentUser() != null);
return (loggedIn && hasSession);
}
}