零开始:NetCore项目权限管理系统:登录授权
喜欢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项目权限管理系统:登录授权的更多相关文章
- 零开始:NetCore项目权限管理系统:定义基本接口和实现
上一篇讲了基础的框架搭建 地址:http://www.cnblogs.com/fuyu-blog/p/8909779.html 这篇主要讲解SqlSugar ORM的数据库连接以及建表和接口 ...
- 零开始:NetCore项目权限管理系统:基础框架搭建
有兴趣的同学可以一起做 喜欢NetCore的朋友,欢迎加群QQ:86594082 源码地址:https://github.com/feiyit/SoaProJect 新建一个空的解决方案,建立对应的解 ...
- 一个简单的NetCore项目:2 - 登录
1-UI,登陆界面布局 PS:使用的是metronic 框架,没有用过的可以自行百度. 1.1 metronic 放在wwwroot文件夹下面 1.2 metronic 中的 open sans 使 ...
- netcore OA权限管理系统
下载
- Asp.Net Core 项目实战之权限管理系统(5) 用户登录
0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...
- 基于云端的通用权限管理系统,SAAS服务,基于SAAS的权限管理,基于SAAS的单点登录SSO,企业单点登录,企业系统监控,企业授权认证中心
基于云端的通用权限管理系统 SAAS服务 基于SAAS的权限管理 基于SAAS的单点登录SSO 基于.Net的SSO,单点登录系统,提供SAAS服务 基于Extjs 4.2 的企业信息管理系统 基于E ...
- Asp.Net Core 项目实战之权限管理系统(0) 无中生有
0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...
- .NET Core/.NET5/.NET6 开源项目汇总5:权限管理系统项目
系列目录 [已更新最新开发文章,点击查看详细] 企业管理系统一般包含后台管理UI.组织机构管理.权限管理.日志.数据访问.表单.工作流等常用必备功能.下面收集的几款优秀开源的管理系统,值得大家 ...
- Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端
0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...
随机推荐
- iOS - 工程文件冲突 - 解决方式
- 35-面试:如何找出字符串的字典序全排列的第N种
http://www.cnblogs.com/byrhuangqiang/p/3994499.html
- php在线支付流程
1.企业与银行的两种接入方式: (1).企业直接与银行对接. 优点:直接与银行进行财务结算,资金安全,适合资金流较大企业. 缺点:开发和维护工作量较大,分别与每家银行签订合同,每年需交 ...
- Paxos Made Simple
Paxos一致性算法——分布式系统中的经典算法,论文本身也有一段有趣的故事.一致性问题是分布式系统的根本问题之一,在论文中,作者一步步的加强最初一致性问题(2.1节提出的问题)的约束条件,最终导出了一 ...
- ubuntu下常用操作
屏幕截图: 可以用ubuntu自带的截图软件:gnome-screenshot. 该工具截图区域并且复制到剪切板命令为 gnome-screenshot -c -a,可以给该命令添加快捷方式,alt ...
- type="image"提交表单
<input type="image" style="cursor:pointer; ">
- HDFS系列 -- HDFS预研
1 HDFS概述 由于传统集中式的物理服务器在存储容量和数据传输速度等方面都有限制,故而越来越不符合这些数据的实际存储需要. 在大数据时代,大数据处理需要解决的首要问题是:如何高效地存储所产生的规模庞 ...
- 2018.09.26 bzoj4326: NOIP2015 运输计划(二分+树上差分)
传送门 简单树上操作. 先转边权为点权. 显然所有的询问操作对应的路径会有一些交点,那么我们可以直接二分答案,对于所有大于二分值的询问用树上差分维护,最后dfs一遍每个点被覆盖了几次,当前情况合法当且 ...
- 2018.08.21 NOIP模拟 unlock(模拟+找规律)
unlock 描述 经济危机席卷全球,L国也收到冲击,大量人员失业. 然而,作为L国的风云人物,X找到了自己的新工作.从下周开始,X将成为一个酒店的助理锁匠,当然,他得先向部门领导展示他的开锁能力. ...
- redhat 6用yum方式安装nginx
前提条件:如果发生了没有注册redhat账号造成没有权限使用yum的情况下,可以参考:http://www.cnblogs.com/boshen-hzb/p/6080431.html 1.cd /et ...