title: ASP.NET MVC Roles and Security
body: <p>Assume like this is my SampleController action method</p>
  
  <pre><code>public ActionResult AdminView()
  {
      return View()
  }
  </code></pre>
  
  <p>If want this controller method to be called if the logged in user belongs to admin role, otherwise this method call should be blocked and the user should get an some custom unauthorized access error page.</p>
  
  <p>In my asp .net mvc web application, when the user logs in, I am storing the user role in a session as a string. And whenever there is a need to validate the user role, I compare the value stored in the session against a constant say "ADMIN_ROLE". But I am writing that piece of code to check for the user role in almost every controller action method and then either return an appropriate view for the user or an unauthorized access page view if the user role is restricted for the controller action method.</p>
  
  <p>I googled and read that we can use something like this.</p>
  
  <pre><code>[Authorize(Roles="admin")]
  public ActionResult AdminView()
  {
    return View()
  }
  </code></pre>
  
  <p>But I am not sure how the Authorize and the Roles keyword works. How when putting Roles = "Admin", is going to help in checking my user role string stored in the session, or how I can redirect a user to unauthorized page, in case the role does not match the role tagged for the action method.</p>