我尝试将Microsoft.AspNetCore.Identity与页面一起使用。我可以这样做,还是必须选择像https://docs.microsoft.com/en-us/aspnet/core/security/authorization/razor-pages-authorization这样的Razor Pages授权约定?我看到了
services.AddMvc()
.AddRazorPagesOptions(options =>
{
options.Conventions.AuthorizeFolder("/Account/Manage");
options.Conventions.AuthorizePage("/Account/Logout");
});`
我有.cshtml文件
@model Proj_s.Models.AccountViewModels.RegisterViewModel
@{
ViewData["Title"] = "Register";
}
<h2>@ViewData["Title"]</h2>
.......
@section Scripts {
@await Html.PartialAsync("_ValidationScriptsPartial")
}
我替换
@page @model Proj_s.Pages.Projects.DetailsModel
与
@model Proj_s.Models.AccountViewModels.RegisterViewModel
为不包含此内容的现有剃刀页面添加身份验证或授权的最佳方法是什么?
答案 0 :(得分:1)
您可以使用ASP.NET Core Identity和Razor Pages。查看this article
通常,只需创建一个模板并查看其实现方式。
dotnet new razor --auth individual
请注意,Razor Pages在定制方面有点棘手。
答案 1 :(得分:0)
最常见且被广泛接受的做法是使用[Authorize]
属性。
[Authorize]
public class AccountController : Controller
{
public ActionResult Login()
{
}
public ActionResult Logout()
{
}
}
这是您保护视图的方式。 [Authorize]
检查用户是否已登录,如果不是,则将其发送回配置的页面(登录)。您还可以检查登录用户是否处于此[Authorize("RoleName")]