Monday, May 7, 2012

ASP.NET MVC Authentication - Customizing Authentication and Authorization The Right Way

http://weblogs.asp.net/jgalloway/archive/2012/05/04/asp-net-mvc-authentication-customizing-authentication-and-authorization-the-right-way.aspx

ASP.NET MVC: Adding aria-required attribute for required fields

http://blogs.msdn.com/b/stuartleeks/archive/2012/05/01/asp-net-mvc-adding-aria-required-attribute-for-required-fields.aspx

@{
     var attributes = new RouteValueDictionary
                          {
                             { "class", "text-box single-line"}
                          };
     if (ViewContext.ViewData.ModelMetadata.IsRequired)
     {
         attributes.Add("aria-required", "true");
     }
}
@Html.TextBox("", ViewContext.ViewData.TemplateInfo.FormattedModelValue, attributes)

What is aria-required?

It is a HTML property to indicate if user input field is required. This property is for Accessible Rich Internet Applications
<input name="ariaexample" id="example" aria-required="true" aria-label="Test"/>

Reference:
http://www.w3.org/WAI/GL/WCAG20-TECHS/ARIA2.html

Friday, May 4, 2012

Implementing [RequireHttps] with ASP.NET Web API

http://blogs.msdn.com/b/carlosfigueira/archive/2012/03/09/implementing-requirehttps-with-asp-net-web-api.aspx

public class RequireHttpsAttribute : AuthorizationFilterAttribute
{
    public override void OnAuthorization(HttpActionContext actionContext)
    {
        var request = actionContext.Request;
        if (request.RequestUri.Scheme != Uri.UriSchemeHttps)
        {
            HttpResponseMessage response;
            UriBuilder uri = new UriBuilder(request.RequestUri);
            uri.Scheme = Uri.UriSchemeHttps;
            uri.Port = 443;
            string body = string.Format("<p>The resource can be found at <a href=\"{0}\">{0}</a>.</p>",
                uri.Uri.AbsoluteUri);
            if (request.Method.Equals(HttpMethod.Get) || request.Method.Equals(HttpMethod.Head))
            {
                response = request.CreateResponse(HttpStatusCode.Found);
                response.Headers.Location = uri.Uri;
                if (request.Method.Equals(HttpMethod.Get))
                {
                    response.Content = new StringContent(body, Encoding.UTF8, "text/html");
                }
            }
            else
            {
                response = request.CreateResponse(HttpStatusCode.NotFound);
                response.Content = new StringContent(body, Encoding.UTF8, "text/html");
            }

            actionContext.Response = response;
        }
    }
}