在我的 ASP.NET MVC 应用程序中,我试图确定用户是否有权访问特定控制器,受授权数据注释的限制,如下所示
[Authorize(Roles = "user")]
我正在尝试覆盖 OnAuthorization 以检查:-
- 如果请求已通过身份验证(效果很好)
- 如果用户被授权访问请求的视图(这不起作用)
我的用户角色存储在我创建的 SessionManager 对象中 -SessionManager.ActiveUser.Roles
这是我所拥有的伪代码形式,但如果有人可以帮助我正确解决这个问题,我将不胜感激。
public class HomeBaseController : Controller
{
protected override void OnAuthorization(AuthorizationContext context)
{
if (context.HttpContext.User.Identity.IsAuthenticated)
{
// these values combined are our roleName
bool isAuthorised = context.HttpContext.User.IsInRole(context.RequestContext.HttpContext.User.Identity.);
if (!context.HttpContext.User.IsInRole(---the roles associated with the requested controller action (e.g. user)---))
{
var url = new UrlHelper(context.RequestContext);
var logonUrl = url.Action("LogOn", "SSO", new { reason = "youAreAuthorisedButNotAllowedToViewThisPage" });
context.Result = new RedirectResult(logonUrl);
return;
}
}
}