相关疑难解决方法(0)

7
推荐指数
1
解决办法
2万
查看次数

防止没有确认电子邮件的用户登录ASP.NET MVC Web API身份(OWIN安全性)

我有一个MVC和一个Web API项目,使用ASP.NET MVC Web API身份(OWIN安全性)进行身份验证.

我在Register功能正常的函数中添加了电子邮件确认,但我不确定如何emailConfirmed = true在登录之前检查是否因为Web API标识上没有显式的登录功能,这是隐含的.

我知道微软有充分的理由深度封装授权功能,但是没有办法实现这一目标吗?

请指教.

这是我的注册功能:

[AllowAnonymous]
[Route("Register")]
 public async Task<IHttpActionResult> Register(RegisterBindingModel model)
    {
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }

        var user = new ApplicationUser() { UserName = model.Email, Email = model.Email };

        IdentityResult result = await UserManager.CreateAsync(user, model.Password);

        if (!result.Succeeded)
        {
            return GetErrorResult(result);
        }

        try
        {
            var code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);

            var callbackUrl = new Uri(Url.Link("ConfirmEmailRoute", new { userId = user.Id, code = code }));

            var email …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc login asp.net-web-api asp.net-identity

6
推荐指数
1
解决办法
1211
查看次数

使用默认的 asp.net mvc 模板时,Html 未正确插入到电子邮件中

使用默认的 mvc 代码在注册时确认电子邮件地址,但是当电子邮件被发送时,它没有显示 html。 在此处输入图片说明 模板MVC代码:

string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
                var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
                await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" +
                    callbackUrl + "\">here</a>");
Run Code Online (Sandbox Code Playgroud)

发送电子邮件异步:

 public Task SendAsync(IdentityMessage message)
    {

        // Plug in your email service here to send an email.
        SmtpClient client = new SmtpClient();
        return client.SendMailAsync("email here",
                                    message.Destination,
                                    message.Subject,
                                    message.Body);
        return Task.FromResult(0);
    }
Run Code Online (Sandbox Code Playgroud)

在查看有关 SO 的其他一些问题时,我稍微更改了发送代码,以便可以将正文设置为允许使用 html,但我仍然遇到相同的问题

  public Task …
Run Code Online (Sandbox Code Playgroud)

asp.net email asp.net-mvc

2
推荐指数
1
解决办法
1449
查看次数