这听起来像是一个非常基本的问题,但ASP.NET的文档一般很糟糕,我找不到如何强制执行电子邮件确认。
我已经能够设置生成和发送确认电子邮件没问题,而且效果很好。
我只希望用户访问已确认的'Auth'端点。我该如何强制执行此操作。
我能找到的关闭信息似乎只适用于需要向Startup.cs添加config.SignIn.RequireEmailConfirmation
的ASP.NET MVC,但Web API中的Startup.cs完全不同。
作为最后的手段,我可以补充一下:
if (User.EmailConfirmed)
到每个端点,但我觉得这有点戏剧性。
我还尝试将此“规则”添加为自定义身份验证属性,但我不确定如何访问当前用户,因此无法检查电子邮件是否已确认。
如何确保电子邮件确认强制执行?
答案 0 :(得分:2)
选项:
当您向具有密码的用户发送邀请链接以进行注册时,请确保您创建的用户没有密码,并向用户发送包含来自AppUserManager.GeneratePasswordResetTokenAsync(user.id)的代码的链接,用户可以在其中设置密码,您可以在此操作中将EmailConfirmed设置为true。
强制检查用户在生成令牌时确认电子邮件:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="https://netdna.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css" rel="stylesheet"/>
<a href="javascript:void(0)" class="stat-item remark" data-id='1' title='Give your Remarks on it'>
<i class="fa fa-comments-o icon"></i>
</a>
<div class="post-footer" id="post-footer-1">
<p>Loading the list</p>
</div>
<a href="javascript:void(0)" class="stat-item remark" data-id='2' title='Give your Remarks on it'>
<i class="fa fa-comments-o icon"></i>
</a>
<div class="post-footer" id="post-footer-2">
<p>Loading the list</p>
</div>
<a href="javascript:void(0)" class="stat-item remark" data-id='3' title='Give your Remarks on it'>
<i class="fa fa-comments-o icon"></i>
</a>
<div class="post-footer" id="post-footer-3">
<p>Loading the list</p>
</div>
去检查你的提供者(ApplicationOAuthProvider):
OAuthOptions = new OAuthAuthorizationServerOptions
{
TokenEndpointPath = new PathString("/Token"),
Provider = new ApplicationOAuthProvider("self"),
//...
AccessTokenExpireTimeSpan = TimeSpan.FromDays(14),
AllowInsecureHttp = false
};