ASP.NET MVC – Internet 应用程序

在 ASP.NET MVC 5 中,你创建新项目时会看到两个非常相似的模板:

  • Empty(空)
  • Internet Application(Internet 应用程序)
  • Intranet Application(Intranet 应用程序)

下面详细解释 Internet Application(Internet 应用程序) 到底是什么,它帮你自动生成了哪些东西,非常适合快速搭建一个面向互联网用户的网站(比如商城、博客、论坛等)。

一、选择 “Internet Application” 后,VS 自动帮你生成什么?

功能模块具体生成内容说明
身份认证系统ASP.NET Identity 2.x(基于 Entity Framework)支持用户名+密码、第三方登录(Google、微信等可扩展)
注册页面AccountController + Register.cshtml用户自己注册
登录/注销Login.cshtml、Logout 动作完整流程
密码找回ForgotPassword.cshtml → ForgotPasswordConfirmation → ResetPassword发邮件重置密码(需配置 SMTP)
邮箱确认ConfirmEmail 流程注册后必须点邮件激活
两步验证(2FA)已集成框架,可一键开启安全加分
社交登录(OAuth)已集成 Microsoft、Facebook、Google、Twitter 登录(只需填 AppId/Secret)开箱即用
用户角色管理RoleManager(默认有但没创建角色,可手动加)后续可快速加 Admin 角色
防伪令牌@Html.AntiForgeryToken() 已全部加上防止 CSRF
布局页_Layout.cshtml + Bootstrap 3(已美化)直接好看
404 与错误页Views/Shared/Error.cshtml、_ViewStart.cshtml友好提示
数据库LocalDB + 自动迁移(Migrations 已开启)第一次运行自动建表

总结一句话:
选了 Internet Application = 你立刻拥有一个完整的、带用户注册登录、邮箱验证、密码找回、社交登录的现代化网站骨架,省了至少 2~3 天的搭建时间。

二、生成的账号相关控制器和视图(重点)

Controllers/
└─ AccountController.cs          ← 注册、登录、外部登录、密码管理全在这
└─ ManageController.cs           ← 修改密码、两步验证、个人资料

Views/
├─ Account/
│   ├─ Login.cshtml
│   ├─ Register.cshtml
│   ├─ ForgotPassword.cshtml
│   ├─ ResetPassword.cshtml
│   └─ ExternalLogin... 等
├─ Manage/
│   ├─ Index.cshtml
│   ├─ ChangePassword.cshtml
│   └─ ...
└─ Shared/
    ├─ _LoginPartial.cshtml      ← 右上角“您好,张三 [注销]”或“注册 登录”
    └─ _Layout.cshtml

三、第一次运行会自动创建的数据库表(LocalDB)

dbo.AspNetUsers          ← 用户主表(包含 EmailConfirmed、PhoneNumber 等)
dbo.AspNetRoles          ← 角色表
dbo.AspNetUserRoles      ← 用户-角色关联
dbo.AspNetUserClaims
dbo.AspNetUserLogins     ← 第三方登录(如 Google 账号绑定)

四、如何快速开始使用(3 分钟上手)

  1. 新建项目 → ASP.NET Web 应用程序 → 选 MVC
    身份验证 → 选择 Individual User Accounts(个人用户账户)
    (这就是 Internet Application)
  2. F5 运行
    → 右上角点【注册】→ 填邮箱密码 → 注册成功
    (注意:默认邮箱确认是开启的,但没配置 SMTP,所以会提示“电子邮件已发送”,其实没发)
  3. 临时关闭邮箱确认(开发时方便)
    打开 App_Start/IdentityConfig.cs 中的 EmailService 类,先改成下面这样跳过真实发邮件:
public Task SendAsync(IdentityMessage message)
{
    // 开发时直接在控制台打印,不发真实邮件
    System.Diagnostics.Debug.WriteLine($"【邮件】To: {message.Destination}  Subject: {message.Subject}  Body: {message.Body}");
    return Task.FromResult(0);
}

再在 AccountController.Register 动作里把这段注释掉:

// await UserManager.SendEmailAsync(user.Id, "确认您的帐户", "请通过单击 <a href=\"" + callbackUrl + "\">此处的链接</a> 确认你的帐户");
await SignInManager.SignInAsync(user, isPersistent:false, rememberBrowser:false);

五、常见需求快速实现方式(基于 Internet 模板)

需求实现方式
新增管理员角色Startup.cs 或 Global.asax → 创建 “Admin” 角色,把用户加入
只有管理员能访问后台在 AdminController 上加 [Authorize(Roles = "Admin")]
记住登录状态 30 天登录时 await SignInManager.SignInAsync(user, isPersistent: true, ...)
强制 HTTPS[RequireHttps] 特性
微信/QQ 登录自己再加 OAuth 中间件(模板已留好扩展位置)

六、模板对比总结

模板适合场景有无登录注册
Empty完全从零开始,自己掌控一切
Internet Application面向互联网用户(商城、博客、社区)有(完整)
Intranet Application企业内部系统(Windows 域认证)有(但用公司账号登录)

结论:
如果你要做一个面向公众开放、需要用户自己注册登录的网站,直接选 Internet Application(个人用户账户),是最高效的选择!

需要我打包发你一个:

  • Internet 模板 + Bootstrap 5 升级版 + 中文提示 + 管理员初始化代码 + 后台管理系统骨架

直接拉下来就能跑,随时说一声即可!

文章已创建 2965

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部