Essentially what you are asking for is the [Authorize] tag present in MVC, it will allow you to restrict access to authorized users and then further restrict to users in specific roles.
Really all you have to do is just add the tag, [Authorize], to any method you don't want anonymous users using. If you don't want them accessing a specific page just add authorize to your controller functions that return/handle the view. You can also set it up to use a whitelist and then only what you explicitly label as available will be available for anonymous (not logged in) users.
Article on MVC authentication:
http://msdn.microsoft.com/en-us/library/ff398049(v=vs.100).aspx
I'd recommend completely going through that walk through as it is pretty comprehensive and the examples are both accessible and easy to extrapolate from.
This MSDN site is a more technical break down of the authorize tag:
http://msdn.microsoft.com/en-us/library/system.web.mvc.authorizeattribute(v=vs.118).aspx
A code sample from the article:
[Authorize]
public class AccountController : Controller
{
public AccountController () { . . . }
[AllowAnonymous]
public ActionResult Register() { . . . }
public ActionResult Manage() { . . . }
public ActionResult LogOff() { . . . } . . .
}
[Authorize]Attribute on the server, or the methods on the client?