首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >修改登录MVC 5 Asp标识

修改登录MVC 5 Asp标识
EN

Stack Overflow用户
提问于 2015-05-12 16:04:38
回答 1查看 482关注 0票数 0

我正在使用MVC 5和Asp标识作为我正在构建的新应用程序。我需要修改登录过程,以便只显示与用户社区有关的信息。我正在考虑创建另一个表,其中包含社区ID和用户ID,类似于AspUserRoles表。如何将此绑定到登录过程中?对不起,我刚接触到MVC,来自Web表单:(

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-12 16:50:06

似乎是个有效的方法。所以你最终会得到这样的结果:

代码语言:javascript
复制
public class Community
{
    ...
    public virtual ICollection<ApplicationUser> Members { get; set; }
}

public class ApplicationUser : IdentityUser
{
    ...
    public virtual ICollection<Community> Communities { get; set; }
}

Entity将从该对象自动生成一个连接表。然后,在您的登录中,您以某种方式提供社区id。这可能是来自一个特殊的URL,一个隐藏的输入,选择框,什么的。由你决定。然后,您只需要轻轻松松地修改进程中的符号即可。默认情况下,在生成的项目模板中,通过以下行处理登录:

代码语言:javascript
复制
var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);

您可以看到PasswordSignInAsync 这里的代码。但我也会把它寄给后人:

代码语言:javascript
复制
public virtual async Task<SignInResult> PasswordSignInAsync(string userName, string password,
    bool isPersistent, bool shouldLockout)
{
    var user = await UserManager.FindByNameAsync(userName);
    if (user == null)
    {
        return SignInResult.Failed;
    }

    return await PasswordSignInAsync(user, password, isPersistent, shouldLockout);
}

所以,只需将您自己的版本添加到ApplicationSignInManager in IdentiyConfig.cs

代码语言:javascript
复制
public virtual async Task<SignInResult> PasswordSignInAsync(int communityId, string userName, string password,
    bool isPersistent, bool shouldLockout)
{
    var user = await UserManager.FindByNameAsync(userName);

    if (user == null || !user.Communities.Any(m => m.Id == communityId))
    {
        return SignInResult.Failed;
    }

    return await PasswordSignInAsync(user, password, isPersistent, shouldLockout);
}

注意额外的条件。然后,只需修改Login操作中的原始调用,以传递communityId

代码语言:javascript
复制
var result = await SignInManager.PasswordSignInAsync(communityId, model.Email, model.Password, model.RememberMe, shouldLockout: false);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30196102

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档