develop #4
@ -5,73 +5,72 @@
 | 
				
			|||||||
    ViewData["Title"] = "登录";
 | 
					    ViewData["Title"] = "登录";
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<h1>@ViewData["Title"]</h1>
 | 
					<h1 class="text-center">@ViewData["Title"]</h1>
 | 
				
			||||||
<div class="row">
 | 
					<div class="container">
 | 
				
			||||||
    <div class="col-md-4">
 | 
					    <div class="row justify-content-center">
 | 
				
			||||||
        <section>
 | 
					        <div class="col-md-6">
 | 
				
			||||||
            <form id="account" method="post">
 | 
					            <section>
 | 
				
			||||||
                <h2>使用本地账户登录。</h2>
 | 
					                <form id="account" method="post" class="card p-4">
 | 
				
			||||||
                <hr />
 | 
					                    <h2 class="text-center">使用本地账户登录。</h2>
 | 
				
			||||||
                <div asp-validation-summary="ModelOnly" class="text-danger" role="alert"></div>
 | 
					                    <hr />
 | 
				
			||||||
                <div class="form-floating mb-3">
 | 
					                    <div asp-validation-summary="ModelOnly" class="text-danger" role="alert"></div>
 | 
				
			||||||
                    <input asp-for="Input.Email" class="form-control" autocomplete="username" aria-required="true" placeholder="name@example.com" />
 | 
					                    <div class="form-outline mb-4">
 | 
				
			||||||
                    <label asp-for="Input.Email" class="form-label">电子邮件</label>
 | 
					                        <input asp-for="Input.Email" type="email" id="email" class="form-control" autocomplete="username" aria-required="true" placeholder="name@example.com" />
 | 
				
			||||||
                    <span asp-validation-for="Input.Email" class="text-danger"></span>
 | 
					                        <label asp-for="Input.Email" class="form-label">电子邮件</label>
 | 
				
			||||||
                </div>
 | 
					                        <span asp-validation-for="Input.Email" class="text-danger"></span>
 | 
				
			||||||
                <div class="form-floating mb-3">
 | 
					                    </div>
 | 
				
			||||||
                    <input asp-for="Input.Password" class="form-control" autocomplete="current-password" aria-required="true" placeholder="password" />
 | 
					                    <div class="form-outline mb-4">
 | 
				
			||||||
                    <label asp-for="Input.Password" class="form-label">密码</label>
 | 
					                        <input asp-for="Input.Password" type="password" id="password" class="form-control" autocomplete="current-password" aria-required="true" placeholder="password" />
 | 
				
			||||||
                    <span asp-validation-for="Input.Password" class="text-danger"></span>
 | 
					                        <label asp-for="Input.Password" class="form-label">密码</label>
 | 
				
			||||||
                </div>
 | 
					                        <span asp-validation-for="Input.Password" class="text-danger"></span>
 | 
				
			||||||
                <div class="checkbox mb-3">
 | 
					                    </div>
 | 
				
			||||||
                    <label asp-for="Input.RememberMe" class="form-label">
 | 
					                    <div class="form-check mb-4">
 | 
				
			||||||
                        <input class="form-check-input" asp-for="Input.RememberMe" />
 | 
					                        <input class="form-check-input" asp-for="Input.RememberMe" />
 | 
				
			||||||
                        记住我
 | 
					                        <label class="form-check-label" asp-for="Input.RememberMe">记住我</label>
 | 
				
			||||||
                    </label>
 | 
					                    </div>
 | 
				
			||||||
                </div>
 | 
					                    <div class="d-grid gap-2">
 | 
				
			||||||
                <div>
 | 
					                        <button id="login-submit" type="submit" class="btn btn-primary btn-block">登录</button>
 | 
				
			||||||
                    <button id="login-submit" type="submit" class="w-100 btn btn-lg btn-primary">登录</button>
 | 
					                    </div>
 | 
				
			||||||
                </div>
 | 
					                    <div class="text-center mt-3">
 | 
				
			||||||
                <div>
 | 
					 | 
				
			||||||
                    <p>
 | 
					 | 
				
			||||||
                        <a id="forgot-password" asp-page="./ForgotPassword">忘记密码?</a>
 | 
					 | 
				
			||||||
                    </p>
 | 
					 | 
				
			||||||
                    <p>
 | 
					 | 
				
			||||||
                        <a asp-page="./Register" asp-route-returnUrl="@Model.ReturnUrl">注册为新用户</a>
 | 
					 | 
				
			||||||
                    </p>
 | 
					 | 
				
			||||||
                    <p>
 | 
					 | 
				
			||||||
                        <a id="resend-confirmation" asp-page="./ResendEmailConfirmation">重新发送电子邮件确认</a>
 | 
					 | 
				
			||||||
                    </p>
 | 
					 | 
				
			||||||
                </div>
 | 
					 | 
				
			||||||
            </form>
 | 
					 | 
				
			||||||
        </section>
 | 
					 | 
				
			||||||
    </div>
 | 
					 | 
				
			||||||
    <div class="col-md-6 col-md-offset-2">
 | 
					 | 
				
			||||||
        <section>
 | 
					 | 
				
			||||||
            <h3>使用其他服务登录。</h3>
 | 
					 | 
				
			||||||
            <hr />
 | 
					 | 
				
			||||||
            @{
 | 
					 | 
				
			||||||
                if ((Model.ExternalLogins?.Count ?? 0) == 0)
 | 
					 | 
				
			||||||
                {
 | 
					 | 
				
			||||||
                    <div>
 | 
					 | 
				
			||||||
                        <p>
 | 
					                        <p>
 | 
				
			||||||
                            没有配置外部身份验证服务。请参阅<a href="https://go.microsoft.com/fwlink/?LinkID=532715">关于设置此ASP.NET应用程序以支持通过外部服务登录的文章</a>。
 | 
					                            <a id="forgot-password" asp-page="./ForgotPassword">忘记密码?</a>
 | 
				
			||||||
 | 
					                        </p>
 | 
				
			||||||
 | 
					                        <p>
 | 
				
			||||||
 | 
					                            <a asp-page="./Register" asp-route-returnUrl="@Model.ReturnUrl">注册为新用户</a>
 | 
				
			||||||
 | 
					                        </p>
 | 
				
			||||||
 | 
					                        <p>
 | 
				
			||||||
 | 
					                            <a id="resend-confirmation" asp-page="./ResendEmailConfirmation">重新发送电子邮件确认</a>
 | 
				
			||||||
                        </p>
 | 
					                        </p>
 | 
				
			||||||
                    </div>
 | 
					                    </div>
 | 
				
			||||||
                }
 | 
					                </form>
 | 
				
			||||||
                else
 | 
					            </section>
 | 
				
			||||||
                {
 | 
					        </div>
 | 
				
			||||||
                    <form id="external-account" asp-page="./ExternalLogin" asp-route-returnUrl="@Model.ReturnUrl" method="post" class="form-horizontal">
 | 
					    </div>
 | 
				
			||||||
                        <div>
 | 
					</div>
 | 
				
			||||||
                            <p>
 | 
					
 | 
				
			||||||
                                @foreach (var provider in Model.ExternalLogins!)
 | 
					<div class="row justify-content-end">
 | 
				
			||||||
                                {
 | 
					    <div class="col-md-6">
 | 
				
			||||||
                                    <button type="submit" class="btn btn-primary" name="provider" value="@provider.Name" title="Log in using your @provider.DisplayName account">@provider.DisplayName</button>
 | 
					        <section>
 | 
				
			||||||
                                }
 | 
					            <h3 class="text-center">使用其他服务登录。</h3>
 | 
				
			||||||
                            </p>
 | 
					            <hr />
 | 
				
			||||||
                        </div>
 | 
					            @if ((Model.ExternalLogins?.Count ?? 0) == 0)
 | 
				
			||||||
                    </form>
 | 
					            {
 | 
				
			||||||
                }
 | 
					                <div>
 | 
				
			||||||
 | 
					                    <p class="text-center">
 | 
				
			||||||
 | 
					                        没有配置外部身份验证服务。请参阅<a href="https://go.microsoft.com/fwlink/?LinkID=532715">关于设置此ASP.NET应用程序以支持通过外部服务登录的文章</a>。
 | 
				
			||||||
 | 
					                    </p>
 | 
				
			||||||
 | 
					                </div>
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                <form id="external-account" asp-page="./ExternalLogin" asp-route-returnUrl="@Model.ReturnUrl" method="post" class="card p-4">
 | 
				
			||||||
 | 
					                    <div class="d-grid gap-2">
 | 
				
			||||||
 | 
					                        @foreach (var provider in Model.ExternalLogins!)
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            <button type="submit" class="btn btn-primary" name="provider" value="@provider.Name" title="使用您的 @provider.DisplayName 账户登录">@provider.DisplayName</button>
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    </div>
 | 
				
			||||||
 | 
					                </form>
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        </section>
 | 
					        </section>
 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
 | 
				
			|||||||
@ -7,7 +7,7 @@ using Microsoft.AspNetCore.Mvc;
 | 
				
			|||||||
namespace AGSS.Controllers.Admin;
 | 
					namespace AGSS.Controllers.Admin;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[Authorize(Roles = "Admin")]
 | 
					[Authorize(Roles = "Admin")]
 | 
				
			||||||
[Route("api/v1/Admin/[controller]")]
 | 
					[Route("api/v1/[controller]/[action]")]
 | 
				
			||||||
public class AdminRoleControllers:ControllerBase
 | 
					public class AdminRoleControllers:ControllerBase
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
 | 
				
			|||||||
@ -8,7 +8,7 @@ using Microsoft.AspNetCore.Mvc;
 | 
				
			|||||||
namespace AGSS.Controllers.User;
 | 
					namespace AGSS.Controllers.User;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[Authorize]
 | 
					[Authorize]
 | 
				
			||||||
[Route("api/v1/[controller]")]
 | 
					[Route("api/v1/[controller]/[action]")]
 | 
				
			||||||
public class UserControllers:ControllerBase
 | 
					public class UserControllers:ControllerBase
 | 
				
			||||||
{ 
 | 
					{ 
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										1
									
								
								Areas/Identity/Pages/Account/Register.cshtml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								Areas/Identity/Pages/Account/Register.cshtml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					<input asp-for="Input.Email" type="email" class="form-control validate form-outline" autocomplete="username" aria-required="true" placeholder="name@example.com" />
 | 
				
			||||||
							
								
								
									
										101
									
								
								script.sql
									
									
									
									
									
								
							
							
						
						
									
										101
									
								
								script.sql
									
									
									
									
									
								
							@ -1,103 +1,6 @@
 | 
				
			|||||||
CREATE TABLE IF NOT EXISTS "__EFMigrationsHistory" (
 | 
					START TRANSACTION;
 | 
				
			||||||
    "MigrationId" character varying(150) NOT NULL,
 | 
					 | 
				
			||||||
    "ProductVersion" character varying(32) NOT NULL,
 | 
					 | 
				
			||||||
    CONSTRAINT "PK___EFMigrationsHistory" PRIMARY KEY ("MigrationId")
 | 
					 | 
				
			||||||
);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
START TRANSACTION;
 | 
					 | 
				
			||||||
CREATE TABLE "AspNetRoles" (
 | 
					 | 
				
			||||||
    "Id" text NOT NULL,
 | 
					 | 
				
			||||||
    "Name" character varying(256),
 | 
					 | 
				
			||||||
    "NormalizedName" character varying(256),
 | 
					 | 
				
			||||||
    "ConcurrencyStamp" text,
 | 
					 | 
				
			||||||
    CONSTRAINT "PK_AspNetRoles" PRIMARY KEY ("Id")
 | 
					 | 
				
			||||||
);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
CREATE TABLE "AspNetUsers" (
 | 
					 | 
				
			||||||
    "Id" text NOT NULL,
 | 
					 | 
				
			||||||
    "Sex" text,
 | 
					 | 
				
			||||||
    "Description" character varying(100),
 | 
					 | 
				
			||||||
    "Config" character varying(200),
 | 
					 | 
				
			||||||
    "JobCode" character varying(10),
 | 
					 | 
				
			||||||
    "JobName" character varying(10),
 | 
					 | 
				
			||||||
    "Birthday" character varying(20),
 | 
					 | 
				
			||||||
    "UserName" character varying(256),
 | 
					 | 
				
			||||||
    "NormalizedUserName" character varying(256),
 | 
					 | 
				
			||||||
    "Email" character varying(256),
 | 
					 | 
				
			||||||
    "NormalizedEmail" character varying(256),
 | 
					 | 
				
			||||||
    "EmailConfirmed" boolean NOT NULL,
 | 
					 | 
				
			||||||
    "PasswordHash" text,
 | 
					 | 
				
			||||||
    "SecurityStamp" text,
 | 
					 | 
				
			||||||
    "ConcurrencyStamp" text,
 | 
					 | 
				
			||||||
    "PhoneNumber" text,
 | 
					 | 
				
			||||||
    "PhoneNumberConfirmed" boolean NOT NULL,
 | 
					 | 
				
			||||||
    "TwoFactorEnabled" boolean NOT NULL,
 | 
					 | 
				
			||||||
    "LockoutEnd" timestamp with time zone,
 | 
					 | 
				
			||||||
    "LockoutEnabled" boolean NOT NULL,
 | 
					 | 
				
			||||||
    "AccessFailedCount" integer NOT NULL,
 | 
					 | 
				
			||||||
    CONSTRAINT "PK_AspNetUsers" PRIMARY KEY ("Id")
 | 
					 | 
				
			||||||
);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
CREATE TABLE "AspNetRoleClaims" (
 | 
					 | 
				
			||||||
    "Id" integer GENERATED BY DEFAULT AS IDENTITY,
 | 
					 | 
				
			||||||
    "RoleId" text NOT NULL,
 | 
					 | 
				
			||||||
    "ClaimType" text,
 | 
					 | 
				
			||||||
    "ClaimValue" text,
 | 
					 | 
				
			||||||
    CONSTRAINT "PK_AspNetRoleClaims" PRIMARY KEY ("Id"),
 | 
					 | 
				
			||||||
    CONSTRAINT "FK_AspNetRoleClaims_AspNetRoles_RoleId" FOREIGN KEY ("RoleId") REFERENCES "AspNetRoles" ("Id") ON DELETE CASCADE
 | 
					 | 
				
			||||||
);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
CREATE TABLE "AspNetUserClaims" (
 | 
					 | 
				
			||||||
    "Id" integer GENERATED BY DEFAULT AS IDENTITY,
 | 
					 | 
				
			||||||
    "UserId" text NOT NULL,
 | 
					 | 
				
			||||||
    "ClaimType" text,
 | 
					 | 
				
			||||||
    "ClaimValue" text,
 | 
					 | 
				
			||||||
    CONSTRAINT "PK_AspNetUserClaims" PRIMARY KEY ("Id"),
 | 
					 | 
				
			||||||
    CONSTRAINT "FK_AspNetUserClaims_AspNetUsers_UserId" FOREIGN KEY ("UserId") REFERENCES "AspNetUsers" ("Id") ON DELETE CASCADE
 | 
					 | 
				
			||||||
);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
CREATE TABLE "AspNetUserLogins" (
 | 
					 | 
				
			||||||
    "LoginProvider" text NOT NULL,
 | 
					 | 
				
			||||||
    "ProviderKey" text NOT NULL,
 | 
					 | 
				
			||||||
    "ProviderDisplayName" text,
 | 
					 | 
				
			||||||
    "UserId" text NOT NULL,
 | 
					 | 
				
			||||||
    CONSTRAINT "PK_AspNetUserLogins" PRIMARY KEY ("LoginProvider", "ProviderKey"),
 | 
					 | 
				
			||||||
    CONSTRAINT "FK_AspNetUserLogins_AspNetUsers_UserId" FOREIGN KEY ("UserId") REFERENCES "AspNetUsers" ("Id") ON DELETE CASCADE
 | 
					 | 
				
			||||||
);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
CREATE TABLE "AspNetUserRoles" (
 | 
					 | 
				
			||||||
    "UserId" text NOT NULL,
 | 
					 | 
				
			||||||
    "RoleId" text NOT NULL,
 | 
					 | 
				
			||||||
    CONSTRAINT "PK_AspNetUserRoles" PRIMARY KEY ("UserId", "RoleId"),
 | 
					 | 
				
			||||||
    CONSTRAINT "FK_AspNetUserRoles_AspNetRoles_RoleId" FOREIGN KEY ("RoleId") REFERENCES "AspNetRoles" ("Id") ON DELETE CASCADE,
 | 
					 | 
				
			||||||
    CONSTRAINT "FK_AspNetUserRoles_AspNetUsers_UserId" FOREIGN KEY ("UserId") REFERENCES "AspNetUsers" ("Id") ON DELETE CASCADE
 | 
					 | 
				
			||||||
);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
CREATE TABLE "AspNetUserTokens" (
 | 
					 | 
				
			||||||
    "UserId" text NOT NULL,
 | 
					 | 
				
			||||||
    "LoginProvider" text NOT NULL,
 | 
					 | 
				
			||||||
    "Name" text NOT NULL,
 | 
					 | 
				
			||||||
    "Value" text,
 | 
					 | 
				
			||||||
    CONSTRAINT "PK_AspNetUserTokens" PRIMARY KEY ("UserId", "LoginProvider", "Name"),
 | 
					 | 
				
			||||||
    CONSTRAINT "FK_AspNetUserTokens_AspNetUsers_UserId" FOREIGN KEY ("UserId") REFERENCES "AspNetUsers" ("Id") ON DELETE CASCADE
 | 
					 | 
				
			||||||
);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
CREATE INDEX "IX_AspNetRoleClaims_RoleId" ON "AspNetRoleClaims" ("RoleId");
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
CREATE UNIQUE INDEX "RoleNameIndex" ON "AspNetRoles" ("NormalizedName");
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
CREATE INDEX "IX_AspNetUserClaims_UserId" ON "AspNetUserClaims" ("UserId");
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
CREATE INDEX "IX_AspNetUserLogins_UserId" ON "AspNetUserLogins" ("UserId");
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
CREATE INDEX "IX_AspNetUserRoles_RoleId" ON "AspNetUserRoles" ("RoleId");
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
CREATE INDEX "EmailIndex" ON "AspNetUsers" ("NormalizedEmail");
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
CREATE UNIQUE INDEX "UserNameIndex" ON "AspNetUsers" ("NormalizedUserName");
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
INSERT INTO "__EFMigrationsHistory" ("MigrationId", "ProductVersion")
 | 
					INSERT INTO "__EFMigrationsHistory" ("MigrationId", "ProductVersion")
 | 
				
			||||||
VALUES ('20250708111442_user', '9.0.6');
 | 
					VALUES ('20250709054553_userrole', '9.0.6');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
COMMIT;
 | 
					COMMIT;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user