2016-04-11 4 views
1

Ich habe ein kleines Problem. Ich möchte prüfen, ob der Benutzer in der Rolle Admin nach dem Klicken auf Login ist. Ich habe ein Problem verlassen, als es mitErhalten Sie UserName innerhalb der Anmeldung, um zu überprüfen, ob es Administratorrolle ist

if(User.IsInRole("Administrator")) 

Benutzer tun == null, und ich kann nicht einen anderen Weg finden, um es zu tun.

Ich versuchte mehrere Dinge, aber nichts funktioniert tatsächlich.

Es sollte dieses withing

switch (result) 
     { 
      case SignInStatus.Success: 
       //check if user is admin 
       if (Roles.GetRolesForUser().Contains("Administrator")) 
       { 
        return RedirectToAction("Index", "MIS"); 
       } 
       else 
        return View(); 
+0

Haben Sie überprüft, welchen Wert das ist Benutzer, der übergeben wird? – Izzy

+0

wenn ich 'User.IsInRole (" Admin ")' User = null – bfmv991

Antwort

1

nicht sicher, warum Sie keinen Zugriff mehr bekommen zum Http Context User Objekt so ist hier eine Abhilfe

switch (result) 
      { 
       case SignInStatus.Success: 
        //check if user is admin 
        var adminRole = context.Roles.Where(r => r.Name == "Administrator").FirstOrDefault(); 
        var user = context.Users.Where(u => u.UserName == model.Username).FirstOrDefault(); 
        if(user.Roles.Where(r => r.RoleId == adminRole.Id).Count() > 0) 
        { 
         return RedirectToAction("Index", "MIS"); 
        } 
        else 
         return View(); 
Verwandte Themen