基于ASP.NET Identity为两个独立ASP.NET MVC应用搭建统一登录认证系统
统一登录应用搭建入门指引
1. 基础框架搭建
- 创建新的ASP.NET MVC5项目,选择带身份认证的模板,或者手动引入ASP.NET Identity相关NuGet包
- 配置项目域名指向
login.xyz.com,确保和app-a.xyz.com、app-b.xyz.com处于同一根域(便于后续跨子域身份凭证共享)
2. 多数据库用户验证实现
- 为App A和App B分别创建独立的
IdentityDbContext子类,各自配置对应的数据库连接字符串 - 登录表单提交后,实例化两个DbContext对应的
UserManager,依次调用UserManager.FindAsync(userName, password)验证用户身份 - 找到匹配用户后,标记该用户所属的应用(A或B),终止后续验证流程
3. 登录后重定向与凭证同步
- 验证通过后,在登录应用中生成ASP.NET Identity认证Cookie,注意配置Cookie的域为根域
.xyz.com,让子应用可以读取 - 根据用户所属应用,重定向到
app-a.xyz.com或app-b.xyz.com - 配置两个子应用的
machineKey与登录应用完全一致,确保它们能正确解密跨子域的认证Cookie,实现自动登录
4. 核心注意事项
- 绝对禁止在跨应用请求中明文传递密码,所有验证逻辑必须在登录应用内部完成
- 封装通用的用户验证服务,避免重复编写两个数据库的验证代码
- 处理验证失败场景(用户不存在、密码错误),返回清晰的错误提示
- 确保三个应用的ASP.NET Identity版本一致,避免因版本差异导致的凭证解析问题
内容的提问来源于stack exchange,提问作者Dev 404
相关产品推荐
相关产品推荐

