我有一个.NET Core 2 MVC项目,并且我的网站的一部分与项目中的另一个完全分开。这两个"零件"共享相同的用户集。在项目的一个部分中,我希望用户能够查看登录页面,但只有具有特定角色才能实际登录的用户。
目前,我使用ASP.NET Identity的用户管理器的IsInRoleAsync
方法,但是我想知道是否有更好的解决方案?
谢谢
您可以使用Authorize
属性:
public class AccountController : Controller
{
[HttpGet]
public ActionResult Login()
{
// shows the login page
}
[HttpPost]
[Authorize(Roles = "Administrator")]
public ActionResult Login(LoginViewModel model)
{
// Process login
}
}
我认为您可以这样使用您的代码:
[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
}
我希望这对您有用。