喜欢NetCore的朋友,欢迎加群QQ:86594082

源码地址:https://github.com/feiyit/SoaProJect

管理员的模型

namespace FytSoa.Core.Model.Sys
{
public class SysAdmin
{
/// <summary>
/// 唯一编号
/// </summary>
public string Guid { get; set; } /// <summary>
/// 归属角色
/// </summary>
public string RoleGuid { get; set; } /// <summary>
/// 归属部门
/// </summary>
public string DepartmentGuid { get; set; } /// <summary>
/// 登录账号
/// </summary>
public string LoginName { get; set; } /// <summary>
/// 登录密码
/// </summary>
public string LoginPwd { get; set; } /// <summary>
/// 真是姓名
/// </summary>
public string TrueName { get; set; } /// <summary>
/// 编号
/// </summary>
public string Number { get; set; } /// <summary>
/// 头像
/// </summary>
public string HeadPic { get; set; } /// <summary>
/// 性别
/// </summary>
public string Sex { get; set; } = "男"; /// <summary>
/// 手机号码
/// </summary>
public string Mobile { get; set; } /// <summary>
/// 状态 1=整除 0=不允许登录
/// </summary>
public bool Status { get; set; } /// <summary>
/// 邮箱
/// </summary>
public string Email { get; set; } /// <summary>
/// 备注
/// </summary>
public string Summary { get; set; } /// <summary>
/// 添加时间
/// </summary>
public DateTime AddDate { get; set; } = DateTime.Now; /// <summary>
/// 当前登录时间
/// </summary>
public DateTime? LoginDate { get; set; } /// <summary>
/// 上次登录时间
/// </summary>
public DateTime? UpLoginDate { get; set; }
}
}

在FytSoa.Service新建一个管理员登录的接口

    /// <summary>
/// 管理员接口
/// </summary>
public interface ISysAdminService
{
/// <summary>
/// 登录
/// </summary>
/// <param name="parm"></param>
/// <returns></returns>
Task<ApiResult<SysAdmin>> LoginAsync(SysAdminLogin parm);
}

在创建一个实现类

public class SysAdminService : DbContext, ISysAdminService
{
/// <summary>
/// 用户登录实现
/// </summary>
/// <param name="parm"></param>
/// <returns></returns>
public async Task<ApiResult<SysAdmin>> LoginAsync(SysAdminLogin parm)
{
var res = new ApiResult<SysAdmin>();
try
{
parm.password = DES3Encrypt.EncryptString(parm.password);
var model = Db.Queryable<SysAdmin>()
.Where(m => m.LoginName == parm.loginname).First();
if (model != null)
{
if (model.LoginPwd.Equals(parm.password))
{
res.success = true;
res.message = "获取成功!";
res.data = model;
}
else
{
res.success = false;
res.statusCode = (int)ApiEnum.Error;
res.message = "密码错误~";
}
}
else
{
res.success = false;
res.statusCode = (int)ApiEnum.Error;
res.message = "账号错误~";
}
}
catch (Exception ex)
{
res.message = ApiEnum.Error.GetEnumText() + ex.Message;
res.statusCode = (int)ApiEnum.Error;
}
return await Task.Run(() => res);
}
}

在Startup注入一下接口

services.AddTransient<ISysAdminService, SysAdminService>();

在Pages文件夹建一个FytAdmin的文件夹, Razor文件夹就是路径

创建一个Razor页面,名称为Login  选中生成PageModel类

前台使用Layui  可以节省大量工作量

在PageModel类中我们定义一个登录的方法

/// <summary>
/// 登录
/// </summary>
/// <param name="parm"></param>
/// <returns></returns>
public async Task<IActionResult> OnPostLoginAsync(SysAdminLogin parm)
{
var apiRes = _sysAdminService.LoginAsync(parm);
try
{
var user = apiRes.Result.data;
if (apiRes.Result.statusCode == )
{
var identity = new ClaimsPrincipal(
new ClaimsIdentity(new[]
{
new Claim(ClaimTypes.Sid,user.Guid),
new Claim(ClaimTypes.Role,"超级管理员"),
new Claim(ClaimTypes.Thumbprint,user.HeadPic),
new Claim(ClaimTypes.Name,user.TrueName),
new Claim(ClaimTypes.UserData,user.UpLoginDate.ToString()),
}, CookieAuthenticationDefaults.AuthenticationScheme)
);
await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, identity, new AuthenticationProperties
{
ExpiresUtc = DateTime.UtcNow.AddMinutes(),
IsPersistent = true,
AllowRefresh = false
});
} }
catch (Exception ex)
{
apiRes.Result.message = ex.Message;
apiRes.Result.statusCode = (int)ApiEnum.Error;
} return new JsonResult(new ApiResult<string>() { statusCode = apiRes.Result.statusCode, message = apiRes.Result.message });
}

这样服务端的方法就写好了,关于Core2.0的登录授权,可以移步不到  Asp .Net Core 2.0 登录授权以及多用户登录

新建一个Login.js

layui.use(['element', 'jquery', 'form'], function () {
var form = layui.form,
layer = layui.layer,
$ = layui.jquery;
form.on('submit(loginsub)', function (data) {
console.log(data.field);
$.ajax({
type: "post",
url: "/fytadmin/login?handler=login",
data: data.field,
success: function (res) {
if (res.statusCode == ) {
window.location.href = '/fytadmin/index';
} else {
alert(res.message);
}
}
})
return false;
});
$(window).resize(
bodysize
);
bodysize();
function bodysize()
{
$("body").height($(window).height())
}
});

这样一个登录的功能就实现了

零开始:NetCore项目权限管理系统:登录授权的更多相关文章

  1. 零开始:NetCore项目权限管理系统:定义基本接口和实现

    上一篇讲了基础的框架搭建    地址:http://www.cnblogs.com/fuyu-blog/p/8909779.html 这篇主要讲解SqlSugar   ORM的数据库连接以及建表和接口 ...

  2. 零开始:NetCore项目权限管理系统:基础框架搭建

    有兴趣的同学可以一起做 喜欢NetCore的朋友,欢迎加群QQ:86594082 源码地址:https://github.com/feiyit/SoaProJect 新建一个空的解决方案,建立对应的解 ...

  3. 一个简单的NetCore项目:2 - 登录

    1-UI,登陆界面布局 PS:使用的是metronic 框架,没有用过的可以自行百度. 1.1 metronic 放在wwwroot文件夹下面 1.2  metronic 中的 open sans 使 ...

  4. netcore OA权限管理系统

    下载

  5. Asp.Net Core 项目实战之权限管理系统(5) 用户登录

    0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...

  6. 基于云端的通用权限管理系统,SAAS服务,基于SAAS的权限管理,基于SAAS的单点登录SSO,企业单点登录,企业系统监控,企业授权认证中心

    基于云端的通用权限管理系统 SAAS服务 基于SAAS的权限管理 基于SAAS的单点登录SSO 基于.Net的SSO,单点登录系统,提供SAAS服务 基于Extjs 4.2 的企业信息管理系统 基于E ...

  7. Asp.Net Core 项目实战之权限管理系统(0) 无中生有

    0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...

  8. .NET Core/.NET5/.NET6 开源项目汇总5:权限管理系统项目

    系列目录     [已更新最新开发文章,点击查看详细] 企业管理系统一般包含后台管理UI.组织机构管理.权限管理.日志.数据访问.表单.工作流等常用必备功能.下面收集的几款优秀开源的管理系统,值得大家 ...

  9. Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端

    0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...

随机推荐

  1. 139. Word Break (String; DP)

    Given a string s and a dictionary of words dict, determine if s can be segmented into a space-separa ...

  2. 【英宝通Unity4.0公开课学习 】(六)76讲到90讲

    还是关于Mecanim动画的内容. 这些讲的每讲长度明显比前面的长,而且很多都涉及到脚本编写. 不过我还是2倍速给略览过去了,主要目的就是学个框架嘛 :) 1. Blend Tree 可嵌套. 可理解 ...

  3. Our Journey of Xian Ends

    Our Journey of Xian Ends https://nanti.jisuanke.com/t/18521 262144K   Life is a journey, and the roa ...

  4. 几种TCP连接终止

    在三次连接完成后,accept调用前,客户机发来RST. Berkeley实现将完全在内核中处理,不通知. 而SVR4实现将返回一个错误EPROTO,而POSIX指出应该是ECONNABORTED,后 ...

  5. TZOJ 4839 麦森数(模拟快速幂)

    描述 形如2^P-1的素数称为麦森数,这时P一定也是个素数.但反过来不一定,即如果P是个素数,2^P-1不一定也是素数.到1998年底,人们已找到了37个麦森数.最大的一个是P=3021377,它有9 ...

  6. 【校招面试 之 C/C++】第9题 C++多态

    C++的多态性用一句话概括就是:在基类的函数前加上virtual关键字,在派生类中重写该函数,运行时将会根据对象的实际类型来调用相应的函数.如果对象类型是派生类,就调用派生类的函数:如果对象类型是基类 ...

  7. [leetcode]680. Valid Palindrome II有效回文II(可至多删一原字符)

    Given a non-empty string s, you may delete at most one character. Judge whether you can make it a pa ...

  8. JSF控件的immediate属性和页面生命周期

    JSF中的控件基本都有immediate属性,对于这个属性的使用总结如下,更详细内容可参考Oracle官方文档. 1,为了更好的理解immediate属性,先看一下JSF页面的生命周期: JSF页面的 ...

  9. How to Set Up an Rsync Daemon on Your Linux Server

    Introduction This tutorial will take you through setting up an rsync daemon on your Linux server. Yo ...

  10. 还在手工制作APP规范文档?这款设计神器你不容错过

    之前写了一些关于APP原型文档的文章:一款APP的交互文档从撰写到交付 这次想写下关于APP设计规范文档的内容,规范文档这个东西,实际上大部分中小型公司没有这方面的需求,也没精力去制作这样一个系统性的 ...