I have a controller and I want two roles to be able to access it. 1-admin OR 2-moderator
I know you can do [Authorize(Roles=”admin, moderators”)] but I have my roles in an enum. With the enum I can only authorize ONE role. I can’t figure out how to authorize two.
I have tried something like [Authorize(Roles=MyEnum.Admin, MyEnum.Moderator)] but that wont compile.
Someone once suggested this:
[Authorize(Roles=MyEnum.Admin)]
[Authorize(MyEnum.Moderator)]
public ActionResult myAction()
{
}
but it doesn’t work as an OR. I think in this case the user has to be part of BOTH roles. Am I overlooking some syntax? Or is this a case where I have to roll my own custom authorization?
Try using the bit OR operator like this:
If that doesn’t work, you could just roll your own. I currently just did this on my project. Here’s what I did:
Also, make sure to add a flags attribute to your enum and make sure they are all valued from 1 and up. Like this:
The left bit shifting gives the values 1, 2, 4, 8, 16 and so on.
Well, I hope this helps a little.