如何解决验证用户身份后,剃须刀页面授权未加载页面
我一直在尝试在Razor 3.0 Web应用程序中实现基本身份验证。
我有一个用户通过 SignInAsync()登录,但是当尝试重定向到需要授权的页面时,该页面无法加载。而是重新加载登录页面,并使用附加的“ ?ReturnUrl =%Page%Path ”更新URL。
Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages(options =>
{
options.Conventions.Authorizefolder("/Admin");
options.Conventions.AllowAnonymousToPage("/Login");
options.Conventions.AddPageRoute("/Login","");
});
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie();
}
public void Configure(IApplicationBuilder app,IWebHostEnvironment env)
{
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.UseAuthentication();
app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
});
}
在这里,我将Admin文件夹设置为需要授权,并允许匿名用户访问登录页面。
Login.cshtml.cs
[BindProperty]
public usermodel UserLogin { get; set; }
public async Task<IActionResult> OnPost()
{
try
{
if (ModelState.IsValid)
{
var loginInfo = apiConnector.Get();
if (loginInfo)
{
await this.SignInUser(UserLogin.Username,false);
return this.RedirectToPage("/Admin/FormOverview");
}
}
}
catch(Exception e)
{
Console.Write(e);
}
return this.Page();
}
private async Task SignInUser(string username,bool isPersistant)
{
try
{
var claims = new List<Claim>() {
new Claim(ClaimTypes.Name,username)
};
var claimIdentities = new ClaimsIdentity(claims,CookieAuthenticationDefaults.AuthenticationScheme);
var claimPrincipal = new ClaimsPrincipal(claimIdentities);
var authProperties = new AuthenticationProperties
{
AllowRefresh = true,IsPersistent = true,};
await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme,claimPrincipal,authProperties);
}
在这里,我设置了一个虚拟API,该API始终返回true,并且用户创建了Claim并对其进行了登录。
我是Razor的新手,所以我可能无法正确处理此问题,感谢您的帮助。
解决方法
订单很重要
app.UseAuthentication();
app.UseAuthorization();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。