在ASP.Net MVC 5中,可以使用User.IsInRole
方法来检查用户在_Layout中的角色。以下是一个包含代码示例的解决方法:
首先,在_Layout.cshtml文件中添加下面的代码来检查用户的角色:
@if (User.IsInRole("Admin"))
{
// 显示管理员相关内容
}
else if (User.IsInRole("User"))
{
// 显示普通用户相关内容
}
然后,在您的控制器中,您需要在用户登录时将角色添加到用户的Identity
中。您可以使用AddClaim
方法来添加角色:
using System.Security.Claims;
using Microsoft.AspNet.Identity;
// ...
public async Task Login(LoginViewModel model, string returnUrl)
{
// 验证用户凭据
var user = await UserManager.FindAsync(model.UserName, model.Password);
if (user != null)
{
// 创建用户标识
var identity = await UserManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie);
// 添加角色到用户标识
if (user.IsAdmin)
{
identity.AddClaim(new Claim(ClaimTypes.Role, "Admin"));
}
else
{
identity.AddClaim(new Claim(ClaimTypes.Role, "User"));
}
// 登录用户
AuthenticationManager.SignIn(new AuthenticationProperties { IsPersistent = model.RememberMe }, identity);
return RedirectToLocal(returnUrl);
}
else
{
ModelState.AddModelError("", "无效的用户名或密码。");
return View(model);
}
}
请注意,上述示例假设您已经配置了ASP.Net Identity并使用UserManager
来管理用户。您可以根据您的具体情况进行调整。