asp.net mvc-在OnAuthorize之前有没有办法做一些事情



我添加和/或从RoleSetter的角色中删除用户,注销用户,登录用户,但登录页面仍然显示,这告诉我授权已经发生。

我的控制器ActionMethod引起登录提示,并被装饰为:

[RoleSetter(Order = 0)]
[Authorize(Roles = "project_user", Order = 1)]
public ActionResult Details(int? projectId)
{
    ...
}

RoleSetter是一个AuthorizeAttribute,它执行一些逻辑来添加或/或从asp.net-identity中的角色中删除用户,如下所示:

public class RoleSetterAttribute : AuthorizeAttribute
{
    public new void OnAuthorization(AuthorizationContext filterContext)
    {
        // Logic to add and/or remove roles
        ...
        // SignOut then SignIn to reset claims
        IAuthenticationManager authenticationManager = filterContext.HttpContext.GetOwinContext().Authentication;
        authenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie);
        var identity = userManager.CreateIdentity(user, DefaultAuthenticationTypes.ApplicationCookie);
        authenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = false }, identity);
    }
}

在执行授权之前,我的RoleSetter有没有办法执行我以为设置Order就可以了,但我还是点击了登录页面。如果我登录,则角色发生了更改,用户有权查看页面;但他们不应该看到登录页面。

您可以在PreRequestHandlerExecute事件上使用HttpModule和连接。当然,这意味着你不会使用任何与Mvc相关的东西,但可能你无论如何都不需要它。

相关内容

  • 没有找到相关文章

最新更新