2017-12-08 9 views
-1

Ich habe ein .NET Core 2 MVC Projekt und ich habe einen Teil der Website komplett getrennt von dem anderen in meinem Projekt. Diese beiden "Teile" teilen sich den gleichen Benutzerkreis. die Login-Seite, aber nur Benutzer mit spezifischer Rolle in der Lage sein zu sehen, in der Lage sein, um tatsächlich in loggt sein..NET Core 2 MVC rollenbasiertes Login

Zur Zeit verwende ich die IsInRoleAsync Methode von ASP.NET Identität des In eines der Teile des Projektes I Nutzer wollen User Manager, aber ich frage mich, ob es eine bessere Lösung dafür gibt?

Dank

Antwort

0

Sie können das Authorize Attribut:

public class AccountController : Controller 
{ 
    [HttpGet] 
    public ActionResult Login() 
    { 
     // shows the login page 
    } 

    [HttpPost] 
    [Authorize(Roles = "Administrator")] 
    public ActionResult Login(LoginViewModel model) 
    { 
     // Process login 
    } 
} 
+0

In diesem Fall kann ich mich überhaupt nicht einloggen. Da die POST-Anforderungsaktion, die mich anmeldet, durch '[Authorize (Roles =" Administrator ")] eingeschränkt wird. –

+0

Die Administratorrolle ist ein Beispiel, Sie müssen es durch Ihre eigene Rolle ersetzen, die sich anmelden kann. – JimmyFL

+0

Welche Rolle Sie dort auch spielen, es würde nie funktionieren. Es ist so, weil die Autorisierungsprüfung vor dem Hauptteil der Login-Methode ausgeführt würde, wo die Log-In-Logik tatsächlich wäre. –

0

Ich glaube, Sie Ihren Code wie folgt verwenden können:

[HttpPost] 
public ActionResult Login(LoginViewModel model) 
{ 
    // Process login 
    // after he loged in 
    // Check if he is an admin, if not log out using : 
    await signInManager.SignOutAsync(); 
    // then redirect to login page with a message 
} 

Ich hoffe, das für Sie arbeitet.