喜欢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. 10-多写一个@Autowired导致程序崩了

    再是javaweb实验六中,是让我们改代码,让它跑起来,结果我少注释了一个,导致一直报错,检查许久没有找到,最后通过代码替换逐步查找,才发现问题.

  2. Linux中chown、chmod、chgrp

    1.chgrp (转变文件所属用户组) chgrp(转变文件所属用户组)change group chgrp 用户组 文件名 ###便是这个格了.若是整个目次下的都改,则加-R参数用于递归. 如:ch ...

  3. dede中arcurl的解析

    有时候我们需要在dede中通过$dsql查询出文章数据,并生成文章的地址. 但是dede默认的dede_archives和附加表dede_addonarticle都没有存放arcurl的字段. 说明a ...

  4. C++的MFC 与 HTML 双向通讯

    C++中嵌入ie浏览器总结(1) - ie边框 及上下文菜单 最近项目中用html 来做界面,也就折腾了一下在wxwidget中嵌入浏览器的若干细节工作,mfc也基本是类似的,由于wxwidget中已 ...

  5. PAT 1070 结绳(25)(代码)

    1070 结绳(25 分) 给定一段一段的绳子,你需要把它们串成一条绳.每次串连的时候,是把两段绳子对折,再如下图所示套接在一起.这样得到的绳子又被当成是另一段绳子,可以再次对折去跟另一段绳子串连.每 ...

  6. 为什么二代测序的原始数据中会出现Read重复现象?

    为什么二代测序的原始数据中会出现Read重复现象? 要搞清楚这个read重复(duplicate)的问题,我想我们需要从NGS数据的产出过程说起,具体来说如下: 基因组DNA提取: DNA随机打断,最 ...

  7. array_column()提取二维数组中某个值

    <?php $multipleCommodity = array( =>array(), =>array() ); $arr1=array_column($multipleCommo ...

  8. ubuntu系统下安装pyspider:使用supervisord启动并管理pyspider进程配置及说明

    首先感谢segmentfault.com的“imperat0r_”用户的文章和新浪的“小菜一碟”用户的文章.这是他们的配置文件.我参考也写了一个,在最后呢. 重点说明写在前面.本人用superviso ...

  9. 2018.09.13 poj2728Desert King(最优比率生成树)

    传送门 01分数规划经典题. 不过用krsukal会T掉. 这题用prim反而更快(毕竟是完全图) 因此直接二分+最小生成树搞定. 代码: #include<iostream> #incl ...

  10. 2018.08.28 洛谷P3345 [ZJOI2015]幻想乡战略游戏(点分树)

    传送门 题目就是要求维护带权重心. 因此破题的关键点自然就是带权重心的性质. 这时发现直接找带权重心是O(n)的,考虑优化方案. 发现点分树的树高是logn级别的,并且对于以u为根的树,带权重心要么就 ...