小编ada*_*mse的帖子

方法上的多个授权属性

我在类方法上指定两个单独的Authorization属性时遇到问题:如果两个属性中的任何一个为true,则允许用户访问.

Athorization类看起来像这样:

[AttributeUsage(AttributeTargets.All, AllowMultiple = true)]
public class AuthAttribute : AuthorizeAttribute {
. . .
Run Code Online (Sandbox Code Playgroud)

和行动:

[Auth(Roles = AuthRole.SuperAdministrator)]
[Auth(Roles = AuthRole.Administrator, Module = ModuleID.SomeModule)]
public ActionResult Index() {
    return View(GetIndexViewModel());
}
Run Code Online (Sandbox Code Playgroud)

有没有办法解决这个问题,还是我需要重新考虑我的方法?

这将在MVC2中运行.

c# asp.net-mvc asp.net-core

34
推荐指数
3
解决办法
3万
查看次数

如何修复nginx在任何标头测试工具上抛出400个错误的请求标头?

我的网站正在使用nginx,测试网站使用标头测试工具,例如http://www.webconfs.com/http-header-check.php,但每次下面说400次错误请求都是工具的输出.虽然我的所有页面在浏览器中都可以很好地加载,但是当我在Chrome控制台中看到它时,状态代码为200OK.

HTTP/1.1 400 Bad Request => 
Server => nginx
Date => Fri, 07 Sep 2012 09:40:09 GMT
Content-Type => text/html
Content-Length => 166
Connection => close
Run Code Online (Sandbox Code Playgroud)

我真的不明白我的服务器配置有什么问题?

一些谷歌搜索建议使用增加缓冲区大小,并将其增加到以下:

large_client_header_buffers 4 16k;
Run Code Online (Sandbox Code Playgroud)

同样的结果仍然存在.

有人能引导我走向正确的方向吗?

nginx

26
推荐指数
5
解决办法
14万
查看次数

Google Oauth错误:应设置至少一个客户端机密(已安装或Web)

我正在使用Google的Oauth 2.0通过我们的服务器将视频上传到Youtube.我的客户ID是"服务帐户".我下载了json密钥并将其添加到我的解决方案中.

这是相关代码:

 private async Task Run(string filePath)
        {
            UserCredential credential;
            var keyUrl = System.Web.HttpContext.Current.Server.MapPath("~/content/oauth_key.json");
            using (var stream = new FileStream(keyUrl, FileMode.Open, FileAccess.Read))
            {
                credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(
                    GoogleClientSecrets.Load(stream).Secrets,
                    // This OAuth 2.0 access scope allows an application to upload files to the
                    // authenticated user's YouTube channel, but doesn't allow other types of access.
                    new[] { YouTubeService.Scope.YoutubeUpload },
                    "user",
                    CancellationToken.None
                );
            }

            var youtubeService = new YouTubeService(new BaseClientService.Initializer()
            {
                HttpClientInitializer = credential,
                ApplicationName = Assembly.GetExecutingAssembly().GetName().Name
            });
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我收到此错误:应设置至少一个客户端机密(已安装或Web).

但是,在我的json中没有"客户秘密":

{ …
Run Code Online (Sandbox Code Playgroud)

c# oauth-2.0 google-oauth

15
推荐指数
3
解决办法
9689
查看次数

在Windows 10中没有通过OneGet/PackageManagement安装Chocolaty软件包?

我正在尝试使用带有chocolaty的oneget,它似乎根本不起作用.该软件包说它已安装,没有任何警告或通知.它将软件包安装在choco目录中,但不运行安装脚本,因此实际上并未安装应用程序.请注意,这是Windows 10(Powershell 5).

Get-PackageProvider –Name Chocolatey -ForceBootstrap
Set-PackageSource -Name chocolatey -Trusted 
Install-package filezilla -Verbose -Force -ProviderName chocolatey
Run Code Online (Sandbox Code Playgroud)

产量

powershell来自命令

windows目录

powershell nuget chocolatey dsc windows-10

14
推荐指数
1
解决办法
3022
查看次数

Angularjs - ng-disabled无法正常工作

我试图input在用户选择文件后禁用文件标记.

HTML:

<div ng-controller='firstController'>
    <div ng-controller='secondController'>
      <input type="file" name="file" upload class="theFileInput" ng-disabled="fileInMemory">
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

JS,第一控制器:

$scope.fileInMemory = false; // tracks if user selected a file for upload, but didn't upload it
$rootScope.$on('fileAdded', function () {
     $scope.fileInMemory = true;
     console.log($scope.fileInMemory);
});
Run Code Online (Sandbox Code Playgroud)

upload 是一个指令.

在页面加载时,ng-disabled具有false应该fileInMemory更改时,input标记仍未被禁用.console.log表明价值fileInMemory正在发生变化.

到目前为止我尝试了什么

<input type="file" name="file" class="theFileInput" ng-disabled="'fileInMemory'">
Run Code Online (Sandbox Code Playgroud)

只是禁用该字段,什么时候fileInMemory是假的.

<input type="file" name="file" class="theFileInput" ng-disabled="fileInMemory == 'true'">
Run Code Online (Sandbox Code Playgroud)

不行.

<input type="file" name="file" class="theFileInput" ng-disabled="{{fileInMemory}}">
Run Code Online (Sandbox Code Playgroud)

仍然无法正常工作. …

html javascript angularjs

9
推荐指数
1
解决办法
8824
查看次数

simple_one_for_one start_child()返回already_started

我有一个应该启动simple_one_for_one工人的主管.当我start_child()第一次打电话时,一切都很顺利.但是,当我第二次这样做时,我明白了{error,{already_started,<0.71.0>}}.为什么simple_one_for_one主管会给我一个回报already_started?我错过了什么?

这是代码:主管,工人.

erlang erlang-otp simple-one-for-one erlang-supervisor

8
推荐指数
1
解决办法
1621
查看次数

使用 annotate 或 extra 将外键字段添加到查询集?(相当于 SQL“AS”?)

我合并了两个查询集(qs1 和 qs2),它们单独工作正常,如下所示:

qlist = [qs1, qs2]
results = list(chain(qs1, qs2))
Run Code Online (Sandbox Code Playgroud)

到目前为止,一切都很好 - 上面的作品。但现在我正在尝试使用以下命令对结果进行排序:

qlist = [qs1, qs2]
results = sorted(chain(qs1, qs2), key=attrgetter('monthly_fee'))
Run Code Online (Sandbox Code Playgroud)

问题是第二个queryset(qs2)通过ForeignKey引用monthly_fee;而 qs1 有 'monthly_fee' 可用。这是qs2:

qs2 = Offer.objects.select_related('subscription') 
qs2 = qs2.order_by(subscription__monthly_fee) 
Run Code Online (Sandbox Code Playgroud)

以及简化模型:

class Subscription(models.Model): 
    monthly_fee = models.IntegerField(null=False, blank=True, default=0) 
    name = models.CharField(max_length=120, null=True, blank=True)

class Offer(models.Model): 
    promotion_name = models.CharField(max_length=120, null=True, blank=True)
    subscription = models.ForeignKey(Subscription)
    discount = models.IntegerField(null=False, blank=True, default=0) 
Run Code Online (Sandbox Code Playgroud)

我尝试使用 .annotate() 和 .extra()subscription__monthly_fee将查询 qs2 中的重命名如下:

qs2 = Offer.objects.select_related('subscription').annotate(monthly_fee=subscription__monthly_fee)
Run Code Online (Sandbox Code Playgroud)

但是然后得到错误

未定义全局名称“subscription__monthly_fee”

我只是通过覆盖我的模型的 .save() 方法来在创建对象时手动将每月的费用添加到每个 Offer 实例来解决这个问题。但只是想检查是否有更好的方法? …

python django django-orm django-queryset

8
推荐指数
1
解决办法
8689
查看次数

对GCM Token更新过程感到困惑

试图实施谷歌的最新GCM服务.我已阅读GCM文档.我还下载并分析了谷歌的示例实施.从以上所述我了解以下内容:

  1. InstanceId服务提供API以生成gcm registration tokens您在应用服务器中发送和存储此生成的令牌.
  2. 这些令牌可以在一次从客户端的一阵子以及实例Id服务端所提到改变这里.要处理这个问题,你必须实现InstanceIDListenerService,InstanceID提供程序将调用 onTokenRefresh你编写逻辑的地方来获取新令牌并将其发送到服务器(Google的示例应用程序)
  3. 如果您的应用服务器发送较旧的注册ID,GCM服务器会发送您的设备,这里有一些称为canonical_id(如此处所述)(这是设备发送的最后一次registration_id).您必须使用此canonical_id替换服务器中的现有令牌.

现在,以下是我的问题:

  1. InstanceId.getToken如果未卸载应用程序,似乎返回相同的令牌,如果令牌未更改,则返回相当快.那么,RegistrationIntentService每次启动应用程序时都可以调用它吗?这样我就可以保证一直使用最新的令牌.
  2. onTokenRefresh当您的应用未连接到Play商店(没有互联网或其他东西)时,if刷新是如何发生的?InstanceId提供商是否重试?这是在某处记录的吗?如果同时发送推送通知会发生什么?
  3. 究竟是什么canonical_id?它是为设备生成的最新令牌(由InstanceID.getToken客户端或InstanceId提供商端发起)?如果canonical_id确实是最新的gcm令牌,那么onTokenRefresh实施的需要是什么,因为您可以分析推送通知数据并更新您的应用服务器,如果您找到canonical_id提供的?

android google-cloud-messaging

7
推荐指数
1
解决办法
2613
查看次数

是否可以使用applicative表达chainl1?

是否有可能chainl1从Parsec 表达组合器而不使用parsec定义的Monad实例?

chainl1 p op =
  do x <- p
     rest x
  where
    rest x = do f <- op
                y <- p
                rest (f x y)
          <|> return x
Run Code Online (Sandbox Code Playgroud)

parsing haskell parsec

6
推荐指数
1
解决办法
303
查看次数

删除方括号之间的文本

我试图删除方括号之间的文本,但它似乎只删除了方括号。

SELECT Replace(Replace(aud_desc, '[', ''), ']', '') from _audit
Run Code Online (Sandbox Code Playgroud)

aud_descThis is [a] test但上述我已经得到了它的显示This is a test,我不知道为什么它不删除括号中的文字以及。

我错过了什么吗?

mysql sql

4
推荐指数
1
解决办法
4760
查看次数