I am trying to add authentication to my application, i have entity framework running but now i would like to authenticate the user but i am running into lots of issues configuring it in the configure constructor.
For instance in many tutorials they provide code that no longer works like if I do
// Configure ASP.NET Identity to use our Identity-based application context
services.AddAuthentication()
.AddIdentity()
.AddEntityFrameworkStores()
.AddDefaultTokenProviders();
It tells me that i need to specify the type arguments explicitly, but this is what is in the tutorial?
https://shellmonger.com/2015/05/29/asp-net-mvc5-identity-part-1-the-database/
I am having a hard time understanding what is the right way of doing this, all i want to do is authenticate an user when he/she logs in.
Here is my project.json
"dependencies": {
"EntityFramework.Commands": "7.0.0-rc1-final",
"EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final",
"EntityFramework.Core": "7.0.0-rc1-final",
"Microsoft.AspNet.Diagnostics": "1.0.0-rc1-final",
"Microsoft.AspNet.Diagnostics.Entity": "7.0.0-rc1-final",
"Microsoft.AspNet.Identity": "3.0.0-rc1-final",
"Microsoft.AspNet.Identity.EntityFramework": "3.0.0-rc1-final",
"Microsoft.AspNet.Authentication": "1.0.0-rc1-final",
"Microsoft.AspNet.Authorization": "1.0.0-rc1-final",
"Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-final",
"Microsoft.AspNet.Mvc": "6.0.0-rc1-final",
"Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final",
"Microsoft.AspNet.Server.WebListener": "1.0.0-rc1-final",
"Microsoft.AspNet.StaticFiles": "1.0.0-rc1-final",
"Microsoft.Framework.CodeGenerators.Mvc": "1.0.0-beta5",
"Microsoft.Framework.ConfigurationModel.Json": "1.0.0-beta4",
"Microsoft.Framework.Logging": "1.0.0-beta7",
"Microsoft.Framework.Logging.Console": "1.0.0-beta8",
"Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0-rc1-final"
},
and my configuration :
public class Startup
{
public IConfigurationRoot Configuration { get; set; }
public Startup()
{
var builder = new ConfigurationBuilder()
.AddJsonFile("config.json")
.AddJsonFile($"config.json", optional: true);
builder.AddEnvironmentVariables();
Configuration = builder.Build();
}
// This method gets called by the runtime. Use this method to add services to the container.
// For more information on how to configure your application, visit http://go.microsoft.com/fwlink/?LinkID=398940
public void ConfigureServices(IServiceCollection services)
{
services.AddEntityFramework()
.AddSqlServer()
.AddDbContext<OrganizationsAppContext>(options =>
options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"]));
// Specify the configuration of our Application database context
services.Configure<Option>(options =>
{
options.DefaultUserName = Configuration.Get("DefaultUser:Username");
options.DefaultUserPassword = Configuration.Get("DefaultUSer:Password");
});
// Configure ASP.NET Identity to use our Identity-based application context
//services.AddAuthentication()
// .AddIdentity()
// .AddEntityFrameworkStores()
// .AddDefaultTokenProviders(); DOES NOT WORK!
services.AddMvc();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app)
{
app.UseIISPlatformHandler();
app.UseMvc();
app.UseDefaultFiles();
app.UseStaticFiles();
app.UseIdentity();
}
// Entry point for the application.
public static void Main(string[] args) => WebApplication.Run<Startup>(args);
}
Any help would be appreciated, i am running out of ideas, i have tried several other sites with the same result (did this way of doing it change?).
In ASP.NET Core, authentication is handled by the authentication service, IAuthenticationService, which is used by authentication middleware. The authentication service uses registered authentication handlers to complete authentication-related actions.
You can configure identity in two ways in RC1:
1- When you are adding Identity
Example:
services.AddIdentity<User, Role>(config => {
// Config here
config.User.RequireUniqueEmail = true;
config.Password = new PasswordOptions
{
RequireDigit = true,
RequireNonLetterOrDigit = false,
RequireUppercase = false,
RequireLowercase = true,
RequiredLength = 8,
};
}).AddEntityFrameworkStores<ApplicationContext, int>()
.AddDefaultTokenProviders();
2- Use IdentityOptions
:
Example:
services.Configure<IdentityOptions>(options =>
{
options.Password = new PasswordOptions
{
RequireDigit = true,
RequireNonLetterOrDigit = false,
RequireUppercase = false,
RequireLowercase = true,
RequiredLength = 8,
};
options.Cookies.ApplicationCookie.Events = new CookieAuthenticationEvents
{
OnRedirectToLogin = ctx =>
{
ctx.Response.StatusCode = (int)HttpStatusCode.Unauthorized;
return Task.FromResult<object>(null);
}
};
});
}
More info: ASP.NET Authentication Doc
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With