条件允许匿名
Conditional AllowAnonymous
个人账号asp.netmvc6默认模板在AccountController
中有以下方法
// GET: /Account/Register
[HttpGet]
[AllowAnonymous]
public IActionResult Register()
{
return View();
}
//
// POST: /Account/Register
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Register(RegisterViewModel model) {
...
}
我想实现一些简单的东西,允许匿名访问Register
方法仅当没有用户时已经注册了。
是否 ok/good 扩展 AllowAnonymous
过滤器以便它在返回之前对 Db 进行检查 true/false 或者我应该以某种方式实施策略?
如果扩展属性或使用自定义策略都不是好的解决方案,您有什么建议?
如果有人能用 where/how 上的示例指导我使用自定义逻辑,那就太好了。
这个想法是针对管理部分的,所以只有注册用户不能注册新用户。但是如果没有用户注册(首先部署在空数据库上),我希望用户能够注册 username/password.
安全方面的注意事项:请记住,只能注册特定域的电子邮件,因此即使随机用户在没有用户注册的情况下点击 public 人脸注册页面,它将无法使用 his/her 自己的个人电子邮件地址
进行注册
如果我应该考虑任何额外的安全考虑,我愿意阅读它们。
因为这只是一次性的事情,所以我会 运行 直接在 Register
中检查。创建自定义属性来装饰单个操作方法太过分了。
[HttpGet]
[AllowAnonymous]
public IActionResult Register()
{
if (db.Users.Any())
{
return new HttpStatusCodeResult(HttpStatusCode.Forbidden);
}
return View();
}
从技术上讲,由于您的 post 操作受 CSRF 保护,因此如果不先点击 get 操作就无法成功完成 post,但为了彻底,您可以添加代码如果你愿意,两者都可以。
个人账号asp.netmvc6默认模板在AccountController
// GET: /Account/Register
[HttpGet]
[AllowAnonymous]
public IActionResult Register()
{
return View();
}
//
// POST: /Account/Register
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Register(RegisterViewModel model) {
...
}
我想实现一些简单的东西,允许匿名访问Register
方法仅当没有用户时已经注册了。
是否 ok/good 扩展 AllowAnonymous
过滤器以便它在返回之前对 Db 进行检查 true/false 或者我应该以某种方式实施策略?
如果扩展属性或使用自定义策略都不是好的解决方案,您有什么建议?
如果有人能用 where/how 上的示例指导我使用自定义逻辑,那就太好了。
这个想法是针对管理部分的,所以只有注册用户不能注册新用户。但是如果没有用户注册(首先部署在空数据库上),我希望用户能够注册 username/password.
安全方面的注意事项:请记住,只能注册特定域的电子邮件,因此即使随机用户在没有用户注册的情况下点击 public 人脸注册页面,它将无法使用 his/her 自己的个人电子邮件地址
进行注册如果我应该考虑任何额外的安全考虑,我愿意阅读它们。
因为这只是一次性的事情,所以我会 运行 直接在 Register
中检查。创建自定义属性来装饰单个操作方法太过分了。
[HttpGet]
[AllowAnonymous]
public IActionResult Register()
{
if (db.Users.Any())
{
return new HttpStatusCodeResult(HttpStatusCode.Forbidden);
}
return View();
}
从技术上讲,由于您的 post 操作受 CSRF 保护,因此如果不先点击 get 操作就无法成功完成 post,但为了彻底,您可以添加代码如果你愿意,两者都可以。