Reputation: 89
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?).
Upvotes: 5
Views: 7480
Reputation: 11564
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
Upvotes: 9