Tag: asp.net core

如何在ASP.NET Core中返回401而不是302?

当用户未登录时,我正在尝试让ASP.NET Core Identity返回401.我已经为我的方法添加了[Authorize]属性,而不是返回401,它返回302.我试过了一吨建议但似乎没有任何效果,包括services.Configure和app.UseCookieAuthentication将LoginPath设置为null或PathString.Empty 。

在ASP.NET Core Web API中上载文件和JSON

如何使用分段上传将文件(图像)和json数据列表上载到ASP.NET Core Web API控制器? 我可以成功接收一个文件列表,使用multipart/form-data内容类型上传,如下所示: public async Task Upload(IList files) 当然,我可以使用默认的JSON格式化程序成功接收格式化为我的对象的HTTP请求正文: public void Post([FromBody]SomeObject value) 但是如何在一个控制器动作中将这两者结合起来呢? 如何上传图像和JSON数据并将它们绑定到我的对象?

在ASP.NET 5中获取访问令牌

我的ASP.NET 5(MVC 6 + beta7)Web应用程序(MVC + WebAPI)需要从WebAPI登录调用中获取access_token。 到目前为止,从谷歌搜索,我已经为startup.cs创建了以下代码: app.UseOAuthBearerAuthentication(options => { options.AutomaticAuthentication = true; options.Audience = “http://localhost:62100/”; options.Authority = “http://localhost:62100/”; }); 我的客户方是: var login = function () { var url = “http://localhost:62100/”; var data = $(“#userData”).serialize(); data = data + “&grant_type=password”; $.post(url, data) .success(saveAccessToken) .always(showResponse); return false; }; 是否需要使用UseOpenIdConnectServer ? 如果是这样,我如何使用SigningCredentials以便获得令牌(例如MVC5 ApplicationOAuthProvider)? 请注意,我的网站是简单的演示HTTP站点,我不需要任何SSL。

在beta8中的ConfigurationBuilder中指定应用程序基本路径

我曾经为ConfigurationBuilder指定应用程序基本路径,如下所示: public Startup(IApplicationEnvironment appEnv) { var configurationBuilder = new ConfigurationBuilder(appEnv.ApplicationBasePath) .AddJsonFile(“config.json”) .AddEnvironmentVariables(); Configuration = configurationBuilder.Build(); } 但是,从beta8开始, ConfigurationBuilder的构造函数不再使用应用程序基本路径参数,它现在抛出exception。 如何指定基本路径?

用于Mongodb数据存储的asp.net核心中基于令牌的简单身份validation/授权

我需要实现非常简单的auth mechanizm,基本上有2个角色: Owners和Users 。 而且我认为拥有Enum就足够了。 应用程序本身是SPA,通过Asp.net核心实现webapi。 我看到了文章 – 如何使用EF Identity实现它,但是他们的模型看起来比我实际需要的复杂得多,并且EF面向SQL db,我使用mongo。 所以我的用户看起来像: class UserModel{ Id, Token, Roles: [“Owners”, “Users”], … } 那么我需要实现哪些接口并添加到DI才能使用[Authorize]和[Authorize(Roles=”Users”)]属性,它们是否能够根据我在标头中发送的令牌正确工作?

动态访问EF Core 2.0中的表

我正在使用System.Linq.Dynamic.Core将lambda表达式动态添加到EF中的查询。 我也希望能够按名称选择表格。 我找到了这个答案: https://stackoverflow.com/a/28101268/657477 但它不适用于asp.net core 2.0。 我不能使用DbSet我必须使用DbSet它在错误消息中说。 我希望能够做db.GetTable(“Namespace.MyTable”).Where(…) 我怎样才能做到这一点?

在ASP.NET 5中将Razor视图渲染为字符串

在以前的ASP.NET版本中,将Razor视图呈现为字符串是可能的,尽管不是很简单。 我看起来的方法是使用假控制器,或者使用像RazorEngine这样的外部引擎。 现在,ASP.NET 5改变了很多东西,我想知道这是否比以前更简单。 所以在框架的新版本中有一种直接的方式将Razor视图呈现为字符串,或者我们仍然需要使用以前版本中的方法?

将复杂对象存储在TempData中

我一直试图通过使用TempData重定向后将数据传递给一个动作,如下所示: if (!ModelState.IsValid) { TempData[“ErrorMessages”] = ModelState; return RedirectToAction(“Product”, “ProductDetails”, new { code = model.ProductCode }); } 但不幸的是,它失败了以下消息: ‘ System.InvalidOperationException : Microsoft.AspNet.Mvc.SessionStateTempDataProvider’无法将类型为’ModelStateDictionary’的对象序列化为会话状态。 我在Github的MVC项目中发现了一个问题,但是虽然它解释了为什么我收到这个错误,但我看不出什么是可行的替代方案。 一种选择是将对象序列化为json字符串,然后将其反序列化并重新构建ModelState 。 这是最好的方法吗? 我需要考虑哪些潜在的性能问题? 最后,是否有任何替代方法可以序列化复杂对象或使用其他不涉及使用TempData ?

覆盖ASP.NET Core MVC 1.0中的全局授权filter

我试图在ASP.NET Core 1.0(MVC 6)Web应用程序中设置授权。 更严格的方法 – 默认情况下,我希望将所有控制器和操作方法限制为具有Admin角色的用户。 所以,我正在添加一个全局授权属性,如: AuthorizationPolicy requireAdminRole = new AuthorizationPolicyBuilder() .RequireAuthenticatedUser() .RequireRole(“Admin”) .Build(); services.AddMvc(options => { options.Filters.Add(new AuthorizeFilter(requireAdminRole));}); 然后我想允许具有特定角色的用户访问具体的控制器。 例如: [Authorize(Roles=”Admin,UserManager”)] public class UserControler : Controller{} 这当然是行不通的,因为“全局filter”不允许UserManager访问控制器,因为它们不是“管理员”。 在MVC5中,我能够通过创建自定义授权属性并将我的逻辑放在那里来实现这一点。 然后使用此自定义属性作为全局。 例如: public class IsAdminOrAuthorizeAttribute : AuthorizeAttribute { public override void OnAuthorization(AuthorizationContext filterContext) { ActionDescriptor action = filterContext.ActionDescriptor; if (action.IsDefined(typeof(AuthorizeAttribute), true) || action.ControllerDescriptor.IsDefined(typeof(AuthorizeAttribute), true)) […]

ASP.NET Core MetaDataType属性不起作用

我在我的域模型类上使用MetaDataType属性。 它应该将属性信息从引用的类移动到已设置MetadataType属性的类中。 但它没有像宣传的那样做。 造成这个问题的原因是什么? [MetadataType(typeof(ComponentModelMetaData))] public partial class Component { public int Id { get; set; } public string Name { get; set; } public ICollection Repos { get; set; } public string Description { get; set; } } public class ComponentModelMetaData { [Required(ErrorMessage = “Name is required.”)] [StringLength(30, MinimumLength = 3, ErrorMessage = “Name […]