0

ユーザーが /Edit/4 などの特定の URL にアクセスできないようにするにはどうすればよいですか? id 4 は彼のものではないので、代わりに無許可のページを表示したいと思います。

db に userId フィールドがあり、URL の ID を表示しても問題ないかどうかを確認できます。

カスタムの authorizeattribute を試しましたが、actionresult に送信されたパラメーターにアクセスする方法がわかりません。

public class EditOwnAttribute : AuthorizeAttribute
{
    // Custom property
    public string Level { get; set; }
    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        var isAuthorized = base.AuthorizeCore(httpContext);
        if (!isAuthorized)
        {
            return false;
        }




        return false;
    }
4

1 に答える 1

1

以下のようなカスタム承認フィルターでアクセスを制限するために使用します

    [FeatureAuthentication(AllowFeature="OverView")]
    public ActionResult Index()
    {
    }

それで

public class FeatureAuthenticationAttribute : FilterAttribute, IAuthorizationFilter
{
    public FeatureConst AllowFeature { get; set; }

    public void OnAuthorization(AuthorizationContext filterContext)
    {
        //var featureConst = (FeatureConst)filterContext.RouteData.Values["AllowFeature"];

        var filterAttribute = filterContext.ActionDescriptor.GetFilterAttributes(true)
                                .Where(a => a.GetType() == typeof(FeatureAuthenticationAttribute));
        if (filterAttribute != null)
        {
            foreach (FeatureAuthenticationAttribute attr in filterAttribute)
            {
                AllowFeature = attr.AllowFeature;
            }

            User currentLoggedInUser = (User)filterContext.HttpContext.Session["CurrentUser"];
            bool allowed = ACLAccessHelper.IsAccessible(AllowFeature.ToString(), currentLoggedInUser);
            // do your logic...
            if (!allowed)
            {
                string unAuthorizedUrl = new UrlHelper(filterContext.RequestContext).RouteUrl(new { controller = "home", action = "UnAuthorized" });
                filterContext.HttpContext.Response.Redirect(unAuthorizedUrl);
            }
        }
    }
}
于 2013-10-11T13:28:45.777 に答える