
正文
项目开发-->身份认证及用户登录模块
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
1.首先明确的两个问题
如何判断当前申请是由一个已登录用户发起的?如果Request.IsAuthenticated为true,则表示是一个已登录用户。
如何获取当前登录用户的登录名?如果是一个已登录用户,访问HttpContext.User.Identity.Name可获取登录名
2.身份认证基础
在ASP.NET中,身份认证可以分为两个阶段:认证和授权
认证阶段:识别当前请求的用户是不是一个可识别(已登录)用户
授权阶段:是否允许当前请求访问指定资源
在认证阶段,ASP.NET会根据web.config设置的认证方式,判断当前请求的用户是否拥有加密后的票据。有,则表示已登录用户;没有,则表示未登录用户(跳转登录页面);
在授权阶段:ASP.NET会根据相应config的设置,判断当前登录用户角色,判断是否拥有访问受限资源的权限
3.实现登录退出
用户登录:首先判断数据库中是否包含改用户信息。false,则返回登录失败;true,则新建票据,对其加密,且写入cookie(身份认证必须数据)
新建票据,对其加密,且写入cookie核心代码如下:
public class HGLMember
{
/// <summary>
/// 会员Id
/// </summary>
public string Id { get; set; } /// <summary>
/// 会员账号
/// </summary>
public string Account { get; set; } /// <summary>
/// 会员名称
/// </summary>
public string Name { get; set; } /// <summary>
/// 会员类型
/// </summary>
public int Type { get; set; } /// <summary>
/// 持久化时间。0,默认;>0 ,单位天;-1,永久持久化
/// </summary>
public int Date { get; set; }
} public class HGLAuthorize
{
/// <summary>
/// 会员Id
/// </summary>
public string Id { get; set; } /// <summary>
/// 会员账号
/// </summary>
public string Account { get; set; } /// <summary>
/// 会员名称
/// </summary>
public string Name { get; set; } /// <summary>
/// 会员类型
/// </summary>
public int Type { get; set; } /// <summary>
/// 持久化时间。0,默认;>0 ,单位天;
/// </summary>
public int Date { get; set; } /// <summary>
/// 存放cookie
/// </summary>
public static void SetCookie(HGLMember model)
{
var expires = DateTime.Now.AddMinutes(); if (model.Date > )
expires = DateTime.Now.AddDays(model.Date); //1.创建登录票据,包含登录名以及额外的用户数据。
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
,
model.Id,
DateTime.Now,
expires,
false,
model.ToJsonByJsonNet()
); //2.加密ticket,变成一个加密的字符串。
string cookieValue = FormsAuthentication.Encrypt(ticket); //3.根据加密结果创建登录Cookie
System.Web.HttpCookie cookie = new System.Web.HttpCookie(FormsAuthentication.FormsCookieName, cookieValue);
cookie.Domain = FormsAuthentication.CookieDomain;
cookie.Expires = expires; //4.写登录cookie
System.Web.HttpContext.Current.Response.Cookies.Remove(cookie.Name);
System.Web.HttpContext.Current.Response.Cookies.Add(cookie);
} /// <summary>
/// 清除cookie
/// </summary>
public static void Logoff()
{
FormsAuthentication.SignOut();
} /// <summary>
/// 序列化对象
/// </summary>
private static HGLMember Serialize()
{
FormsIdentity identity = System.Web.HttpContext.Current.User.Identity as FormsIdentity; if (identity == null || identity.Ticket == null || string.IsNullOrEmpty(identity.Ticket.UserData))
return new HGLMember(); return identity.Ticket.UserData.ToObjectByJsonNet<HGLMember>();
}
}
用户退出:直接调用代码:FormsAuthentication.SignOut();
项目开发-->身份认证及用户登录模块的更多相关文章
-
Window上python开发--4.Django的用户登录模块User
Android系统开发交流群:484966421 OSHome. 微信公众号:oshome2015 在搭建站点和web的应用程序时,用户的登录和管理是差点儿是每一个站点都必备的. 今天主要从一个实例了 ...
-
"用户增长"--快速身份认证实现用户增长的技术和产品方案
"用户增长"--快速身份认证实现用户增长的技术和产品方案 1 引言 作为一个互联网产品,用户量的增长是一个非常重要的衡量指标. 这是一个集合了销售,市场,运营,技术的综合能力. ...
-
Java SSH框架系列:用户登录模块的设计与实现思路
1.简介用户登录模块,指的是根据用户输入的用户名和密码,对用户的身份进行验证等.如果用户没有登录,用户就无法访问其他的一些jsp页面,甚至是action都不能访问.二.简单设计及实现本程序是基于Jav ...
-
[Django实战] 第4篇 - 用户认证(用户登录)
今天来实现用户登录模块 首先,我们创建一个表单(forms.py): from django import forms from django.contrib.auth.models import U ...
-
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_5-10.Springboot2.x用户登录拦截器开发实战
笔记 10.Springboot2.x用户登录拦截器开发实战 简介:实战开发用户登录拦截器拦截器 LoginInterceptor 1.实现接口 LoginI ...
-
springboot项目中使用shiro实现用户登录以及权限的验证
欢迎大家加入我的社区:http://t.csdn.cn/Q52km 社区中不定时发红包 更加高级的验证用户权限:用户表.角色表.权限表.多表联合:https://blog.csdn.net/weixi ...
-
Asp.Net 之 使用Form认证实现用户登录 (LoginView的使用)
1. 创建一个WebSite,新建一个页面命名为SignIn.aspx,然后在页面中添加如下的代码 <div class="div_logView"> <asp: ...
-
IDEA项目搭建十二——站点用户登录会话实现
一.简介 前两天写了一篇用户登录会话设计的脑图,这次就把这个引入到项目中实现,总体来说需要几步先罗列一下: 1.需要一个Cookie工具类用于读写cookie 2.需要一个Cache工具类用于在服务端 ...
-
使用uni-app开发微信小程序之登录模块
从微信小程序官方发布的公告中我们可获知:小程序体验版.开发版调用 wx.getUserInfo 接口,将无法弹出授权询问框,默认调用失败,需使用 <button open-type=" ...
随机推荐
-
Windows服务中用Timer和线程两种方式来执行定时任务
在Service服务文件夹下新建Windows服务 - TestService
-
ansible的playbook组件
playbook的核心元素: tasks: 任务 variables: 变量 templates: 模板 handlers: 处理器 roles: 角色 组织格式:YAML(被称为另外一种标记语言) ...
-
QQ分组实现,可收缩---ExpandableListView
activity: package com.zzw.qqgroup; import java.util.ArrayList; import java.util.HashMap; import java ...
-
masterha_check_repl报错汇总
[root@DBMysql ~]#masterha_check_repl --conf=/etc/masterha/app1.cnf 导致如下报错的原因主要有两类: 1.mysql的安装时用源码安装, ...
-
vim之旅
本人是今年的毕业生, 大学很莫名的选择了一个电子商务专业. 由于专业没有实质性的东西可学,加上对电商不敢兴趣, 于是乎我有了大量的时间在宿舍里折腾电脑. 折腾了几年大三决定转业, 大四在还没找工作之前 ...
-
python的pip和virtualenv使用心得
pip可以很方便的安装.卸载和管理Python的包.virtualenv则可以建立多个独立的虚拟环境,各个环境中拥有自己的python解释器和各自的package包,互不影响.pip和virtuale ...
-
《Prism 5.0源码走读》ModuleCatalog
概念 ModuleCatalog 是Prism中主要概念之一,主要用来保存应用程序可用的modules(模块),每个module都是用ModuleInfo来定义(包含module的名称.类型和位置). ...
-
重命名Oracle数据库的表空间(Renaming a Tablespace)
重命名一个表空间时,Oracle会在数据字典.控制文件和数据文件的头部更新这个表空间名. 注意,重命名一个表空间不会重命名相关联的数据文件. 重命名代码示例如下: SQL> alter tabl ...
-
Sqlserver中char,nchar,varchar与Nvarchar的区别分析
1. char类型: 对英文(ASCII)字符占用1个字节,对一个汉字占用2个字节,CHAR存储定长数据很方便,CHAR字段上的索引效率极高,比如定义char(10),那么不论你存储的数据是否达 到了 ...
-
oracle 11g 修改默认监听端口1521
OS: Oracle Linux Server release 5.7 DB: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - ...
Android系统开发交流群:484966421 OSHome. 微信公众号:oshome2015 在搭建站点和web的应用程序时,用户的登录和管理是差点儿是每一个站点都必备的. 今天主要从一个实例了 ...
"用户增长"--快速身份认证实现用户增长的技术和产品方案 1 引言 作为一个互联网产品,用户量的增长是一个非常重要的衡量指标. 这是一个集合了销售,市场,运营,技术的综合能力. ...
1.简介用户登录模块,指的是根据用户输入的用户名和密码,对用户的身份进行验证等.如果用户没有登录,用户就无法访问其他的一些jsp页面,甚至是action都不能访问.二.简单设计及实现本程序是基于Jav ...
今天来实现用户登录模块 首先,我们创建一个表单(forms.py): from django import forms from django.contrib.auth.models import U ...
笔记 10.Springboot2.x用户登录拦截器开发实战 简介:实战开发用户登录拦截器拦截器 LoginInterceptor 1.实现接口 LoginI ...
欢迎大家加入我的社区:http://t.csdn.cn/Q52km 社区中不定时发红包 更加高级的验证用户权限:用户表.角色表.权限表.多表联合:https://blog.csdn.net/weixi ...
1. 创建一个WebSite,新建一个页面命名为SignIn.aspx,然后在页面中添加如下的代码 <div class="div_logView"> <asp: ...
一.简介 前两天写了一篇用户登录会话设计的脑图,这次就把这个引入到项目中实现,总体来说需要几步先罗列一下: 1.需要一个Cookie工具类用于读写cookie 2.需要一个Cache工具类用于在服务端 ...
从微信小程序官方发布的公告中我们可获知:小程序体验版.开发版调用 wx.getUserInfo 接口,将无法弹出授权询问框,默认调用失败,需使用 <button open-type=" ...
-
Windows服务中用Timer和线程两种方式来执行定时任务
在Service服务文件夹下新建Windows服务 - TestService
-
ansible的playbook组件
playbook的核心元素: tasks: 任务 variables: 变量 templates: 模板 handlers: 处理器 roles: 角色 组织格式:YAML(被称为另外一种标记语言) ...
-
QQ分组实现,可收缩---ExpandableListView
activity: package com.zzw.qqgroup; import java.util.ArrayList; import java.util.HashMap; import java ...
-
masterha_check_repl报错汇总
[root@DBMysql ~]#masterha_check_repl --conf=/etc/masterha/app1.cnf 导致如下报错的原因主要有两类: 1.mysql的安装时用源码安装, ...
-
vim之旅
本人是今年的毕业生, 大学很莫名的选择了一个电子商务专业. 由于专业没有实质性的东西可学,加上对电商不敢兴趣, 于是乎我有了大量的时间在宿舍里折腾电脑. 折腾了几年大三决定转业, 大四在还没找工作之前 ...
-
python的pip和virtualenv使用心得
pip可以很方便的安装.卸载和管理Python的包.virtualenv则可以建立多个独立的虚拟环境,各个环境中拥有自己的python解释器和各自的package包,互不影响.pip和virtuale ...
-
《Prism 5.0源码走读》ModuleCatalog
概念 ModuleCatalog 是Prism中主要概念之一,主要用来保存应用程序可用的modules(模块),每个module都是用ModuleInfo来定义(包含module的名称.类型和位置). ...
-
重命名Oracle数据库的表空间(Renaming a Tablespace)
重命名一个表空间时,Oracle会在数据字典.控制文件和数据文件的头部更新这个表空间名. 注意,重命名一个表空间不会重命名相关联的数据文件. 重命名代码示例如下: SQL> alter tabl ...
-
Sqlserver中char,nchar,varchar与Nvarchar的区别分析
1. char类型: 对英文(ASCII)字符占用1个字节,对一个汉字占用2个字节,CHAR存储定长数据很方便,CHAR字段上的索引效率极高,比如定义char(10),那么不论你存储的数据是否达 到了 ...
-
oracle 11g 修改默认监听端口1521
OS: Oracle Linux Server release 5.7 DB: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - ...








