小编Boj*_*jan的帖子

正则表达式小于或大于0

我正在尝试找到一个正则表达式来验证一个大于或小于0的数字.

它必须允许一个数字为1.20,-2,0.0000001等...它简单地不能为0并且它必须是数字,也意味着它不能是0.00,0.0

^(?=.*[1-9])(?:[1-9]\d*\.?|0?\.)\d*$
Run Code Online (Sandbox Code Playgroud)

尝试过,但它不允许否定

regex

2
推荐指数
1
解决办法
2218
查看次数

rails从下拉传递值

实现以下目标的最有效方法是:从下拉列表中获取值并将其与搜索函数一起传递到模型中.

这是搜索的html:

<p>
  <%= text_field_tag :search, params[:search] %>
  <%= submit_tag "Search", :name => nil %>
</p>
Run Code Online (Sandbox Code Playgroud)

这是控制器中的代码:

def index
  @trucks = Truck.search(params[:search])

  respond_to do |format|
  format.html # index.html.erb
  format.json { render json: @trucks }
end
Run Code Online (Sandbox Code Playgroud)

结束

这是模型

def self.search(search)
  if search
    where('truck_no LIKE ?', "%#{search}%")
  else
    scoped
Run Code Online (Sandbox Code Playgroud)

结束

在我的模型中 'truck_no LIKE ?'

我希望它成为column_name + ' LIKE ?'我通过method参数传递列名的地方.如何在html中设置我的下拉列表并将其一直传递给控制器​​?实现这一目标的最佳方法是什么?

编辑:忘记提及,下拉列表应显示卡车编号等内容,但传递值为truck_no

ruby-on-rails

2
推荐指数
1
解决办法
2209
查看次数

Silverstripe检查是否在循环中的第一次迭代

如何检查循环是否在第一次迭代?

我想将一个类添加到列表项但仅添加到第一个列表,而不是所有列表.

<% loop $LatestNews(3) %>
    <% if $this->iteratorPos == 0 %>
    <li class="left-arrow highlight">$Title</li>
    <% else %>
        <li>$Title</li>
    <% end_if %>
<% end_loop %>
Run Code Online (Sandbox Code Playgroud)

有没有办法实现这个目标?我不想通过javascript这样做.

silverstripe

2
推荐指数
1
解决办法
3277
查看次数

在水平线上均匀分布div

我试图在水平线上均匀分配div.我将在屏幕的最大宽度上有3个div.当我调整浏览器的大小并且它不能适合3时,它将切换为两个,然后一个.我已经找到了一些如何完成这个的例子,但没有一个按照我想要的方式做到.例如,我想要的是:

全屏宽度:

[------------------------------------------]
[   [--------]   [--------]   [--------]   ]
[   [        ]   [        ]   [        ]   ]
[   [        ]   [        ]   [        ]   ]
[   [--------]   [--------]   [--------]   ]
[                                          ]
[   [--------]   [--------]   [--------]   ]
[   [        ]   [        ]   [        ]   ]
[   [        ]   [        ]   [        ]   ]
[   [--------]   [--------]   [--------]   ]
[------------------------------------------]
Run Code Online (Sandbox Code Playgroud)

调整宽度:

[-----------------------------]
[   [--------]   [--------]   ]
[   [        ]   [        ]   ]
[   [        ]   [        ]   ]
[   [--------]   [--------]   ] …
Run Code Online (Sandbox Code Playgroud)

html css html5 css3

2
推荐指数
1
解决办法
2万
查看次数

通过谷歌脚本垂直对齐谷歌电子表格上的文本

我想弄清楚如何垂直对齐中间的文本。根据文档,我发现我的以下示例应该可以工作:

var form = FormApp.getActiveForm();
var ss = SpreadsheetApp.openById(form.getDestinationId()); 
var sheet = ss.getSheets()[0];
var fullRange = sheet.getRange("A1:Z1001");

fullRange.setHorizontalAlignment(DocumentApp.HorizontalAlignment.CENTER);
fullRange.setVerticalAlignment(DocumentApp.VerticalAlignment.CENTER);
Run Code Online (Sandbox Code Playgroud)

我发现有趣的是水平对齐有效,但垂直对齐无效。我可能使用过时的方法吗?有没有更好的方法来实现这一点?

google-apps-script

2
推荐指数
1
解决办法
4030
查看次数

身份服务器 4 AddInMemoryIdentityResources

我想知道是否有人可以向我解释AddInMemoryIdentityResources在启动期间注册身份服务器时的用途。从他们展示的示例来看,它看起来像这样(注意注释之间的代码):

services.AddIdentityServer()
.AddDeveloperSigningCredential()
.AddInMemoryPersistedGrants()
//********************
.AddInMemoryIdentityResources(Config.GetIdentityResources())
//********************
.AddInMemoryApiResources(configurationManager.GetApiResources())
.AddInMemoryClients(configurationManager.GetClients())
.AddAspNetIdentity<User>();
Run Code Online (Sandbox Code Playgroud)

那么配置文件是这样的:

public static IEnumerable<IdentityResource> GetIdentityResources()
{
    return new List<IdentityResource>
    {
        new IdentityResources.OpenId(),
        new IdentityResources.Profile(),
    };
}
Run Code Online (Sandbox Code Playgroud)

现在,我认为当你声明一个客户端时,你定义了范围,基本上说你可以传递用户名、id 等...但是,那么这个语句的意义是什么,.AddInMemoryIdentityResources(Config.GetIdentityResources())因为它似乎做了同样的事情,但还没有它是全球性的,因为它不与任何客户联系?

c# identityserver4

2
推荐指数
1
解决办法
2339
查看次数

OAuth 2.0 登录的正确注销流程是什么

假设有一个身份服务器用于登录和注销。然后您就有了一个 Android 应用程序,它使用 OAuth 2.0 通过 IS4 登录和注销。现在,当您登录时,您将单击 Android 应用程序上的登录按钮,通过网络浏览器重定向到您登录的身份服务器,然后重定向回应用程序。我们还假设所有这些都有效,并且您在整个过程结束时获得了访问令牌。

我遇到的问题是注销您的行为应该是什么。现在我明白在 Android 应用程序上,您可以简单地清理访问令牌和刷新令牌,并且用户不再有权访问应用程序中的任何位置。但是,在您的浏览器上,您仍然处于登录状态。所以这是我迷失的部分。

要完全注销,我现在必须将用户重定向到 Web 浏览器以在那里注销,因此现在至少需要单击 2 次注销才能真正注销。如果我采用正确的设计,我还应该有一个确认窗口来减轻某些攻击,现在只需单击 3 次即可注销。那么在这一切之后你要去哪里呢?这是令我困扰的部分。我应该让您留在网络浏览器中还是应该将您推回应用程序登录屏幕?

只是为了澄清我的问题,因为它们实际上是两个:

  1. 我是否应该将用户重定向到要注销的网站,还是应该仅将用户从应用程序中注销?
  2. 如果我也在网站上注销用户,我应该让用户保持浏览器打开状态还是让用户保持应用程序打开状态?基本上,最终目的地是什么?

identity oauth logout oauth-2.0 asp.net-identity

2
推荐指数
1
解决办法
1万
查看次数

IdentityServer4 AddSigningCredentials 与证书

我在我的域上安装了 SSL 证书,我想用它来与 IdentityServer 4 进行签名。现在我发现有一种方法可以让我做到这一点:

services.AddIdentityServer().AddSigningCredentials(certificate);
Run Code Online (Sandbox Code Playgroud)

但是,我无法弄清楚如何实际获取我的证书并将其传递给身份服务器。

我已经尝试过以下方法:

var cert = X509Certificate.CreateFromCertFile(fileName);
services.AddIdentityServer().AddSigningCredentials(certificate);
Run Code Online (Sandbox Code Playgroud)

我得到的错误是它无法转换

“System.Security.Cryptography.X509Certificates.X509Certificate”到“Microsoft.IdentityModel.Tokens.SIgningCredential”

现在我不明白为什么当该方法的重写之一是证书时它会抱怨签名凭据。

c# signing certificate identityserver4 asp.net-core-2.0

2
推荐指数
1
解决办法
7402
查看次数

带破折号的正则表达式电话号码

我正在尝试获得一个将验证以下格式的正则表达式:

234-567-8901
1-234-567-8901
Run Code Online (Sandbox Code Playgroud)

我已经尝试了各种各样的例子,但不知道如何得到一个将考虑可能的1-在乞讨和仍然有效的234-567-8901.

规则是,任何数字,2或3个破折号,如果3个破折号然后是11个数字,如果2个破折号则是10个数字.

^[0-9-]*$
^[\d-]+$
^[\d-]+$
Run Code Online (Sandbox Code Playgroud)

regex

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

Mvc核心在ExternalLoginSignInAsync之后获取UserId

我通过以下方式通过第三方(例如Google)登录用户:

var info = await _signInManager.GetExternalLoginInfoAsync();
var result = await _signInManager.ExternalLoginSignInAsync(info.LoginProvider, info.ProviderKey, false);
Run Code Online (Sandbox Code Playgroud)

上面的内容由于存在而应该成功,如何捕获登录用户的userId?userId是位于我的数据库中Users表上的userId,它不会来自第三方登录提供程序。

这可能吗?我现在似乎找不到任何可以让我检索它的函数或对象。我以为可能是从User Object中获取的,但是据我的理解,它来自HttpContext,在此时,该用户将不会具有已登录的用户身份,至少直到刷新页面后才如此。我也想避免仅出于此目的重定向到另一个页面。

注意:我正在使用Dapper,并且在我的项目中没有EF的痕迹。不知道这有多重要。

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

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