加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 在Asp.Net MVC中使用混合身份验证(Forms,FB conn

发布时间:2020-12-16 04:29:35 所属栏目:asp.Net 来源:网络整理
导读:我正在创建一个新网站,我希望用户能够使用多种方式登录,基本上用户应该能够在我的网站上创建新用户或使用Facebook连接或使用Twitter的帐户登录该网站. 我已经看过几个关于使用这些方法之一的教程,我想知道的是你认为最好的方法是什么? 到目前为止,我认为最
我正在创建一个新网站,我希望用户能够使用多种方式登录,基本上用户应该能够在我的网站上创建新用户或使用Facebook连接或使用Twitter的帐户登录该网站.

我已经看过几个关于使用这些方法之一的教程,我想知道的是你认为最好的方法是什么?

到目前为止,我认为最好的方法是创建自定义身份验证模型(类似于对现有授权类进行子类型化).

这是最好的方法吗?
你能指点一个尝试类似事情的好例子吗?

非常感谢

解决方法

我最近写了类似的东西…这是我采取的方法
public class User {
    public int UserID { get; set; }
    public string Name { get; set; }
    public string Page { get; set; }

    public virtual Authentication Authentication { get; set; }
}

public class Authentication {
    public int Id { get; set; }
    public string LoginId { get; set; }
    public string Provider { get; set; }
    public string Password { get; set; }

    public virtual User User { get; set; }
}

//login methods
User StandardUserLogin(string username) {
    IDataContext db = new DataContext();
    var user = db.Users.SingleOrDefault(u => u.Authentication.LoginId == username);
    if (user != null) {
        if (user.Authentication.Password == password) {
            SetAuthenticationTicket(user);
            return user;
        }
    }
}

我会为每种类型的登录创建不同的登录方法,具体取决于其授权方案的工作方式.

User OpenIdUserLogin(string username) {
    IDataContext db = new DataContext();
    var user = db.Users.SingleOrDefault(u => u.Authentication.LoginId == username && u.Authentication.Provider == "openid");
    if (user == null) {
        //create new openid user
    }

    if (user.Authentication.LoginId == id) {
        SetAuthenticationTicket(user);
        return user;
        }
}

//openid's authentication method
[ValidateInput(false)]
public ActionResult Authenticate(string returnUrl) {
    IAuthenticationResponse response = OpenId.GetResponse();

    if (response == null) {
        //make openid request here
    } else {
        var user = OpenIdUserLogin(response.ClaimedIdentifier);
    }
}

顺便说一句,顶部的两个类代表我的实体框架POCO这里的关键是身份验证表,它与用户表分开.它允许一个用户拥有多种登录方式.希望这可以帮助您实现正常运行.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读