5

控制器

public partial class HomeController
{
     private static String[] userPermissions;
     public HomeController()
     {
          var MyPermission = Convert.ToString(TempData["MyPermission"]);
          userPermissions = (MyPermission).Split(',');
     }

     [Microsoft.AspNet.Mvc.Facebook.FacebookAuthorize(userPermissions)]
     public virtual ActionResult MyActionMethod()
     {
         return View();
     }
}

超载

在此处输入图像描述

编译错误

在上面的块中,我们有以下代码

[Microsoft.AspNet.Mvc.Facebook.FacebookAuthorize(userPermissions)]

它给出以下编译错误...

在此处输入图像描述

4

2 回答 2

1

不确定它是否有帮助,但这是我让用户添加额外权限的方式。

        /// <summary>
    /// Use this method when an action fails due to lack of priviligies. It will redirect user to facebook with provided permission request.
    /// Refactor to handle list of request.
    /// </summary>
    /// <param name="permission"></param>
    private static void AddAdditionalPermissions(string permission)
    {
        System.Diagnostics.Trace.TraceInformation(permission + " not authorized for user.");
        string facebook_urlAuthorize_base = "https://graph.facebook.com/oauth/authorize";
        string scope = permission; //see: https://developers.facebook.com/docs/authentication/permissions/ for extended permissions
        string urlAuthorize = facebook_urlAuthorize_base;
        urlAuthorize += "?client_id=" + AppId;
        urlAuthorize += "&redirect_uri=" + "https://mydomainnamehere.nu/";
        urlAuthorize += "&scope=" + scope;

        //redirect the users browser to Facebook to ask the user to authorize our Facebook application
        HttpContext.Current.Response.Redirect(urlAuthorize, true); //this cannot be done using WebRequest since facebook may need to show dialogs in the users browser
    }
于 2013-09-27T06:56:14.893 回答
-1

我的理解是,您不能动态地将任何内容分配给属性参数(作为错误消息备份)。

我对我的自定义会员提供者做了一些我认为你可以适应实现你的目标的事情。我想要一个角色/权限设置来定义用户对系统各个部分的访问权限,而无需为用户分配一堆单独的权限,但仍然可以非常精细地控制每个角色可以做什么。我按照这里的方法(进行了一些更改)来实现这一点。

如果在您的场景中需要即时执行此操作,我将采取的方法是定义一个常量Role以在FacebookAuthorize属性中使用 anActionMethod然后在处理您的权限检查通过(或让它查找)的数组permissions对于每个“角色”。这样,您分配给 的“角色”AuthorizeAttribute是一个常数。

于 2013-09-26T19:29:48.760 回答