我使用的是Visual Studio 2015 Enterprise,我的dnx版本是最新的(rc1-update 1).当我从头开始使用个人用户帐户创建一个新的Web项目并加载网站并填写表单以注册第一个用户时,我立即收到以下错误:
An unhandled exception occurred while processing the request.
InvalidOperationException: The required antiforgery cookie "9tyjs755shX" is not present.
Microsoft.AspNet.Antiforgery.DefaultAntiforgeryTokenStore.<GetRequestTokensAsync>d__4.MoveNext()
InvalidOperationException: The required antiforgery cookie "9tyjs755shX" is not present.
Run Code Online (Sandbox Code Playgroud)
这必须是某种ASP.NET 5错误,因为我使用的所有内容都是默认安装的.只有在使用Chrome浏览器时才会出现此错误.如果有人想要重现只是从头开始创建一个新的网络应用程序与个人用户帐户,在Chrome中加载网站,尝试注册用户.
我在ASP.NET MVC和发送AJAX帖子时遇到了一个奇怪的问题.我在页面上有一个id为'lnkGetExpirDates'的锚标记.当用户点击它时,我试图简单地将这个硬编码数据发送到我的控制器,这样它就可以将它作为参数使用并将结果返回给页面.
但是,在控制器中,参数始终为空/默认值.请参阅下面的代码,如果我犯了一个愚蠢的错误,请告诉我.
这是我的AJAX帖子:
$("#lnkGetExpirDates").click(function () {
e.preventDefault();
var data = {
StartDate: "1/19/2016",
EndDate: "4/19/2016",
ProductType: "New",
Count: 1
};
$.ajax({
url: '/Products/GetExpirationDates',
type: 'POST',
data: JSON.stringify(data),
contentType: 'application/json; charset=utf-8',
dataType: 'html',
success: function (data) {
$('#ExpirationDates').val(data);
}
});
});
Run Code Online (Sandbox Code Playgroud)
这是我的控制器的动作方法:
// POST: Product/GetExpirationDates
[HttpPost]
//[ValidateAntiForgeryToken]
public IActionResult GetExpirationDates(GetExpirationDatesViewModel vm)
{
// TODO: Get expiration dates and return them in the response
return View();
}
Run Code Online (Sandbox Code Playgroud)
这是GetExpirationDatesViewModel:
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; …Run Code Online (Sandbox Code Playgroud) 将动态创建的SQL参数发送到dapper.
当将多个参数发送给精致时,我通常会执行以下操作:
return connection.Query<Customer>(sql.ToString(),
new
{
Status = status,
ZipCodes = zipCodes,
Types = type
}).ToList();
Run Code Online (Sandbox Code Playgroud)
但是,我需要找出一种方法来根据我将拥有的键值对列表动态生成这些参数.
我希望能够遍历列表并创建params以动态地传递给dapper.
我在ASP.NET Core应用程序中设置了标准身份验证系统.
用户,角色,RoleClaims(充当权限)
在Startup.cs中,我为每个角色和每个权限创建一个策略.假设这会让我在视图中具有足够的灵活性,可以说我希望此按钮显示用户是否是声明DeleteCustomer的角色的一部分,或者用户是否属于角色超级用户.
如何使用Authorize属性执行OR条件.例如,在我的整个网站中,我希望SuperuserRole Policy拥有对所有内容的完全权限.
通过一个动作方法,让我说我有以下内容:
[授权(Policy ="EditCustomer")]
这将要求已登录的用户被分配到具有声明的角色:Edit.Customer,因为我正在为声明Edit.Customer创建策略.这一切都运行正常,但我怎么说我希望任何具有角色超级用户的用户能够访问EditCustomer操作方法.超级用户在数据库中作为角色,并另外添加为名为RequireSuperUser的策略.
c# asp.net-identity asp.net-core-mvc asp.net-identity-3 asp.net-core
在对 json 字符串执行 json_decode 后,我有一个由许多 stdClass 组成的数组。
它看起来像这样:
product: array(3)
0: stdClass
PropertyAbc: "Product 1|Product 5"
1: stdClass
PropertyXyz: "Product 2|Product 9|Product 10"
2: stdClass
PropertyEfg: "Product 3|Product 12"
Run Code Online (Sandbox Code Playgroud)
我需要将其转换为以下格式的所有值的管道分隔字符串:PropertyName>Value 作为我的最终结果:
PropertyAbc>产品 1|PropertyAbc>产品 5|PropertyXyz>产品 2|PropertyXyz>产品 9|PropertyXyz>产品 10|PropertyEfg>产品 3|PropertyEfg>产品 12
这是我尝试执行此操作的方法,但无法弄清楚如何在循环 stdClasses 时获取第一个属性的值和名称(注意:每个 stdClass 始终只有一个属性):
foreach ($json->products as $product) {
// Put all products in an array
$arr = explode('|', $NEED-VALUE-OF-FIRST-PROP);
// Loop through array and combine values
foreach ($arr as $key => $value) {
$arr[$key] = $NEED-NAME-OF-FIRST-PROP . ">" . …Run Code Online (Sandbox Code Playgroud) 我想设置我的 Angular 路线以执行以下操作:
如果用户未登录,则网站的登陆页面 ( http://localhost:4200 ) 和任何其他路由都应转到 LoginComponent。
如果用户已登录,网站的登陆页面 ( http://localhost:4200 ) 和任何不匹配的路由都应转到 DashboardComponent。如果路由匹配,则应转到正确的组件。
所有匹配的路由都应该受到 AuthGuard 的保护,它检查用户是否登录。如果用户没有登录,它们应该以 LoginComponent 结束。(AuthGuard 处理此重定向)。
我面临的一个主要问题是,我不希望 LoginComponent 成为我的 app.component 结构的一部分,该结构中有一个路由器出口(即页眉、页脚、侧边栏)。相反,我只希望登录页面只显示 LoginComponent.html 中的内容。
以下是我目前的路线:
const routes: Routes = [
{ path: 'login', component: LoginComponent },
{ path: '', redirectTo: '/dashboard', pathMatch: 'full', canActivate: [AuthGuard] },
{ path: 'dashboard', component: DashboardComponent, canActivate: [AuthGuard] },
{ path: 'projects', component: ProjectListComponent, canActivate: [AuthGuard] },
{ path: 'projects/new', component: ProjectDetailComponent, canActivate: [AuthGuard] },
{ path: 'projects/edit/:id', component: ProjectDetailComponent, canActivate: …Run Code Online (Sandbox Code Playgroud) 我一直想知道为什么在大多数示例/教程中每个人都将用户名存储在审计数据库列中,例如CreatedBy/ ModifiedBy。
在我的脑海中,我一直想知道,如果我正在构建的系统允许用户更改其用户名(只要不使用该用户名),该怎么办?
在这种情况下,我是否不想存储用户的ID?
我真的不希望这是一个基于意见的问题。因此,我期望的答案是在审计列中存储用户名的情况很好,而在审计列中存储用户ID的情况很好。
我有一个产品列表,但我想将它简化为一个元组,因为我只需要每个产品的productId和brandId.然后在以后的代码中想要检查元组列表是否包含Item1 = x的元组,以及Item2 = y的单独情况.
List<Tuple<int, int>> myTuple = new List<Tuple<int, int>>();
foreach (Product p in userProducts)
{
myTuple.Add(new Tuple<int, int>(p.Id, p.BrandId));
}
int productId = 55;
bool tupleHasProduct = // Check if list contains a tuple where Item1 == 5
Run Code Online (Sandbox Code Playgroud) 我正在使用最新的ASP.NET Core 1.0和EF7.
我从头开始创建一个新的ASP.NET Core 1.0 MVC Web应用程序,并且运行初始迁移很简单:
dnx ef migrations add Initial
dnx ef database update
Run Code Online (Sandbox Code Playgroud)
(我认为我不需要运行此数据库更新命令,但无论如何都要这样做)
另外,我有以下作为我的DbContext的构造函数,我认为我不需要:
public ApplicationDbContext()
{
Database.EnsureCreated();
}
Run Code Online (Sandbox Code Playgroud)
创建初始迁移后,我注意到我的DbContext中的任何DbSet表都添加到数据库中.
现在我只添加了一个模型,并在我的DbContext中为该模型添加了一个DbSet并运行以下命令:
dnx ef migrations add BookMigration
dnx ef database update
Run Code Online (Sandbox Code Playgroud)
在调用数据库更新时,我注意到迁移尝试运行并为所有迁移创建表,而不是仅应用我的新迁移.
这是一个错误吗?我怎么能阻止这个?
当用户单击按钮时,我使用JavaScript设置了Cookie:
document.cookie = "menuSize=Large";
Run Code Online (Sandbox Code Playgroud)
我需要使用razor语法访问此cookie,以便每次用户更改页面时都可以在_Layout.cshtml的顶部输出正确的样式:
@{
if (cookie == "Large")
{
<style>
LARGE STYLES
</style>
}
else
{
<style>
SMALL STYLES
</style>
}
}
Run Code Online (Sandbox Code Playgroud)