让我说我的一个控制器中有以下两种操作方法:
[AllowAnonymous]
public async Task<ViewResult> ClearAlerts(string userId)
{
// Clear the alerts
}
[AllowAnonymous]
public async Task<ViewResult> DenyAlerts(string userId)
{
// Deny the alerts
}
这两个操作方法的链接由我的应用程序通过电子邮件发送给单个人。 userId
是由Identity框架生成的GUID字符串,作为查询参数包含在电子邮件的两个超链接中。
我担心这些匿名方法可能会被接收电子邮件的个人以外的人调用。
我有几个问题:
userId
调用这些方法吗?任何建议都将受到赞赏。
答案 0 :(得分:0)
某人猜测有效userId
的可能性极小,我不担心。
我猜你要检查usermanager
的有效用户。因此,如果找不到用户,则表示有人试图“错误地”访问该操作方法。只是默默地忽略并重定向到另一个页面。像这样:
[AllowAnonymous]
public async Task<ViewResult> ClearAlerts(string userId)
{
if ( string.IsNullOrEmpty( userId ) )
{
return RedirectToAction( "Index","Home" );
}
var user = await UserManager.FindByIdAsync( userId );
if( user == null )
{
return RedirectToAction("Index","Home");
}
// do stuff
}