I’m using OpenId in my ASP.NET MVC application. Works great 🙂 Once i have the user’s OpenId Identifier (once they have authenticated and returned to my site), i load up the users data (to get display name, etc).
From here, i also know their roles.
I’m not sure how to assign the role to the current Forms.Identity.
here’s my code…
// Load User...
var user = GetUsers().ByOpenIdIdentifier("blahblahblahbl....");
// Here means we have a user AND all the roles, for that user.
// Forms Authenticate and Redirect.
FormsAuthentication.SetAuthCookie(user.DisplayName, true);
return RedirectToAction("Index", "Home");
How can i change this code so the authenticated user also has their roles assigned?
Update
I stumbled across this web post about making a custom Authorize attribute. Notice how they are checking the logged in users role that exists in the session? Also, the roles are an enumeration 🙂 This is pretty funky, if u ask me 🙂 Nice and simple.
Thoughts (compared to a full on blown RoleProvider class?)
You’ll need to write your own RoleProvider and hook it up in the web.config file. Your RoleProvider will take the user’s name and figure out their role(s). IPrincipal.IsInRole uses the configured RoleProvider to determine role membership.