gro*_*kky 19 c# asp.net asp.net-identity asp.net-core-mvc asp.net-core
在之前的ASP.NET MVC中,如果用户未经过身份验证,则可以选择重定向到登录操作.
我需要与ASP.NET Core相同的东西,所以我:
[Authorize]到一些任意行动我不希望重定向,因为我没有配置它.但是,它会自动重定向到登录操作!
这个选项在哪里/如何设置?
ani*_*ina 12
使用当前的aspnet核心版本(2.1.0),这已经改变了,现在使用可以使用扩展:
services.ConfigureApplicationCookie(options => options.LoginPath = "/login");
Run Code Online (Sandbox Code Playgroud)
要么
services
.AddAuthentication()
.AddCookie(options =>
{
options.LoginPath = "/login";
options.LogoutPath = "/logout";
});
Run Code Online (Sandbox Code Playgroud)
您可以在本文中看到有关迁移到2.0的更多信息.
Ser*_*gan 12
重定向在我的应用程序中根本不起作用,这里的解决方案都没有修复它,但使用Status Code Pages了:
app.UseStatusCodePages(async context =>
{
var response = context.HttpContext.Response;
if (response.StatusCode == (int)HttpStatusCode.Unauthorized ||
response.StatusCode == (int)HttpStatusCode.Forbidden)
response.Redirect("/Authentication");
});
app.UseMvc(...
Run Code Online (Sandbox Code Playgroud)
小智 7
启动文件中的此代码块在 .Net Core 3.1 中适用于我
services.ConfigureApplicationCookie(options =>
{
// Cookie settings
options.Cookie.HttpOnly = true;
options.ExpireTimeSpan = TimeSpan.FromMinutes(5);
options.LoginPath = "/Identity/Account/Login";
options.AccessDeniedPath = "/Identity/Account/AccessDenied";
options.SlidingExpiration = true;
});
Run Code Online (Sandbox Code Playgroud)
您可以使用CookieAuthenticationOptionsclass 配置路径。
这样的事情。
app.UseCookieAuthentication(new CookieAuthenticationOptions {
LoginPath = new PathString("/Login/"),
AuthenticationType = "My-Magical-Authentication",
// etc...
},
});
Run Code Online (Sandbox Code Playgroud)
对于任何感兴趣的人,也可以通过 AddIdentity 服务提供者来完成。
services.AddIdentity<User, IdentityRole>(options =>
{
options.Cookies.ApplicationCookie.AutomaticAuthenticate = true;
options.Cookies.ApplicationCookie.AutomaticChallenge = true;
options.Cookies.ApplicationCookie.LoginPath = "/Auth/Login";
})
.AddEntityFrameworkStores<MehandiContext>()
.AddDefaultTokenProviders();
Run Code Online (Sandbox Code Playgroud)
正如这里所解释的:https : //stackoverflow.com/a/41643105/5784635
我在 2017 年 4 月尝试过这个并且"Microsoft.AspNetCore.Identity.EntityFrameworkCore": "1.1.0"没有重定向我必须使用该1.0.1版本
dotnet core 支架 Cookie 身份验证的方式是使用身份框架。对于新项目,我建议进入命令行并执行如下操作:
dotnet new mvc -o ExampleProject --auth Individual
Run Code Online (Sandbox Code Playgroud)
您可以通过将 Startup.cs 中的以下方法修改为如下所示来获得对身份验证过程的完全控制:
public void ConfigureServices(IServiceCollection services)
{
services.Configure<CookiePolicyOptions>(options =>
{
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("DefaultConnection")));
services.AddIdentity<IdentityUser, IdentityRole>()
// services.AddDefaultIdentity<IdentityUser>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
.AddRazorPagesOptions(options =>
{
options.AllowAreas = true;
options.Conventions.AuthorizeAreaFolder("Identity", "/Account/Manage");
options.Conventions.AuthorizeAreaPage("Identity", "/Account/Logout");
});
services.ConfigureApplicationCookie(options =>
{
options.LoginPath = $"/Identity/Account/Login";
options.LogoutPath = $"/Identity/Account/Logout";
options.AccessDeniedPath = $"/Identity/Account/AccessDenied";
});
// using Microsoft.AspNetCore.Identity.UI.Services;
services.AddSingleton<IEmailSender, EmailSender>();
}
Run Code Online (Sandbox Code Playgroud)
我个人对身份验证的偏好是 IdentityServer4 的混合流程,它为您提供了使用单点登录配置多个应用程序的范围。
| 归档时间: |
|
| 查看次数: |
31895 次 |
| 最近记录: |