零开始: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 项目实战之 ...
随机推荐
- 2-Qt关闭子窗口时执行特定代码
https://blog.csdn.net/naibozhuan3744/article/details/82689434 本文主要总结在关闭qt的QWidget子窗口瞬间,执行特定代码.由于主窗口关 ...
- 阈值分割与XLD轮廓拼接——第4讲
一.阈值分割 阈值分割算子众多: threshold :这是最基本最简单的阈值算子. binary_threshold :它是自动阈值算子,自动选出暗(dark)的区域,或者自动选出亮(light)的 ...
- golang开发集训营
初识golang Go与VScode开发工具 Golang开门见山
- beego启动找不到conf的原因
beego配置文件路径如下: app.conf内容 httpaddr = "192.168.199.178" httpport = appname = SecProxy runmo ...
- laravel中的old()函数
1.控制器 2.模板
- jQuery获得元素位置offset()和position()的区别
jQuery获得元素位置offset()和position()的区别 jQuery 中有两个获取元素位置的方法offset()和position(),这两个方法之间有什么异同 offset(): 获取 ...
- 流程控制 if while for 已及数字类型 进制转换
一:if 语句 语法一:ifif 条件: code1 code1 code1 语法二:if ...else ... if 条件: code1 code1 code1else: code1 code1 ...
- 微信JSSDK分享接口
<script type="text/javascript" src="http://res.wx.qq.com/open/js/jweixin-1.2.0.js& ...
- 对MVC模型的自悟,详尽解释,为了更多非计算机人员可以理解
今天小编在复习之前刚刚学会的一个小项目,然后突然对MVC有了新的理解,决定迅速将其写成文档,否则可能会忘记,就算是一个顿悟,学了java语言好久了,刚刚才对其有了比较深入的理解,希望对于同样的人能够有 ...
- UVa 1596 Bug Hunt (STL栈)
题意:给定两种操作,一种是定义一个数组,另一种是赋值,让你找出哪一步时出错了,出错只有两种,一种是数组越界,另一种是访问未定义变量. 析:当初看到这个题时,感觉好麻烦啊,然后就放过去了,而现在要重新回 ...