ABP Vnext 学习-授权中心

288 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。 此次部署需要用的环境

前言

实现的方式也有其他的方式 可能不是最优 如果有兴趣的可以自己研究 ;

实现思路

1 首先看他们Abp 的官方文档 其中介绍的已经适用于一部分场景 官方文档的三种介绍 1 仅重写页面模型(C#)端执行其他逻辑,不更改UI. 2 仅重写Razor页面(.cshtml文件),不更改逻辑. 3 完全重写 页面. 重写页面 Account Login 页面 默认会覆盖原有的 和逻辑就可以根据这个继承的 MyLoginModel 来 切入 也可以完全重写 可以根据文档上的继承 PageModel,AbpPageModel

重写页面

1  首先在Pages 文件下 新建 Account 文件夹
2  新建Login 页面 和 MyLoginModel

  public class MyLoginModel : Volo.Abp.Account.Web.Pages.Account.LoginModel{
	 public MyLoginModel(IAuthenticationSchemeProvider schemeProvider, IOptions<AbpAccountOptions> accountOptions, IOptions<IdentityOptions> identityOptions) : base(schemeProvider, accountOptions, identityOptions)
        {
           
        }
        // 这里的拓展空间就挺大的 需要一定的理解才可以重写 就不多介绍了
         public async override Task<IActionResult> OnPostAsync(string action){
			 return	base.OnPostAsync(action)
		}
  }

Login 页面

@page
@using Volo.Abp.AspNetCore.Mvc.UI.Theming
@using Volo.Abp.Account.Settings
@using Volo.Abp.Settings
// 这里指向 你创建的 MyLoginModel
@model xxxxx.Pages.Account.MyLoginModel
@inject Volo.Abp.Settings.ISettingProvider SettingProvider
@inject IThemeManager ThemeManager
@{
	//Layout  这里指的是模板页面 有好几种 可以看 也可以是null
    Layout = ThemeManager.CurrentTheme.GetAccountLayout(false);
    
}

<div>
// 这是他默认的表单  需要注意的是需要保证一些js 的引入 重写的话可以直接去掉 然后研究一下源码
	 <form method="post" id="components-form-demo-normal-login">
                        <input asp-for="ReturnUrl" />
                        <input asp-for="ReturnUrlHash" />
                        <div class="form-group">                          
                            <input asp-for="LoginInput.UserNameOrEmailAddress" class="form-control" />
                            <span asp-validation-for="LoginInput.UserNameOrEmailAddress" class="text-danger"></span>
                        </div>
                        <br/>
                        <br/>
                        <div class="form-group">                          
                            <input asp-for="LoginInput.Password" class="form-control" />
                            <span asp-validation-for="LoginInput.Password" class="text-danger"></span>
                        </div>
           
                        <abp-button type="submit" button-type="Primary" name="Action" value="Login" class="btn-block btn-lg mt-3">登录</abp-button>
                    </form>
</div>

路漫漫其修远矣 加油!!!