我创建应用程序,除了那些启用登录的操作之外的每个操作都应该超出未登录用户的限制.
我应该[Authorize]在每个班级的标题之前添加注释吗?像这儿:
namespace WebApplication2.Controllers {
[Authorize]
public class HomeController : Controller {
public ActionResult Index() {
return View();
}
public ActionResult About() {
ViewBag.Message = "Your application description page.";
return View();
}
public ActionResult Contact() {
ViewBag.Message = "Your contact page.";
return View();
}
}
}
Run Code Online (Sandbox Code Playgroud)
或者有一个捷径?如果我想在特定控制器中更改一个且仅有一个操作的规则怎么办?
我想将[Authorize]数据属性设置为应用程序而不是控制器
[Authorize]
public class CustomerController : Controller {}
Run Code Online (Sandbox Code Playgroud)
这样[Authorize]我就可以仅为该控制器设置授权;我想为每个控制器设置它。
到目前为止,我在program.cs课堂上尝试过这些......
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
services.AddMvc(config =>
{
config.Filters.Add(new AuthorizeFilter(policy));
});
Run Code Online (Sandbox Code Playgroud)
两者都不起作用 - 它构建了应用程序,但在浏览器上它无法访问网站。那么如何在 .NET 6 中全局设置此属性?
builder.services.AddMvc(options => options.Filters.add(new AuthorizeAttribute));
Run Code Online (Sandbox Code Playgroud)
这会引发错误
无法解析方法“Add(Microsoft.AspNetCore.Authorization.AuthorizeAttribute)”
我有一组控制器,每个控制器用于每种授权类型.例如,A类授权将拥有一组控制器,每个控制器都需要A类授权.有没有办法将一个[Authorize(Role="Class A")]属性放在某个适用于每个控制器的地方,而不必用相同的属性装饰每个控制器?
asp.net-mvc controller authorize authorize-attribute asp.net-mvc-3
除了登录页面,我如何拒绝匿名用户访问 asp.net core 中的任何 razor 页面?
我试过
services.AddMvc()
.AddRazorPagesOptions(options =>
{
options.RootDirectory = "/";
options.Conventions.AllowAnonymousToPage("/Account/Login");
options.Conventions.AuthorizeFolder("/");
})
.SetCompatibilityVersion(CompatibilityVersion.Latest);
Run Code Online (Sandbox Code Playgroud) 我有一个MVC 5站点(基于nopCommerce),我需要强制所有用户登录.我过去用其他语言完成它的方式是检查页面标题(所以它在每个页面上)如果用户已登录,则会重定向到登录页面(如果不是).但是,我不知道在MVC中实现这一目标的正确方法.我发现其他答案说重定向在MVC中不是一件好事,这很好,但我无法弄清楚如何正确地完成这个.如何将所有未经授权的用户重定向到登录页面?
c# ×3
asp.net-mvc ×2
.net-6.0 ×1
asp.net ×1
asp.net-core ×1
authorize ×1
controller ×1
razor-pages ×1