惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
人人都是产品经理
人人都是产品经理
有赞技术团队
有赞技术团队
博客园 - 叶小钗
博客园 - Franky
博客园_首页
S
SegmentFault 最新的问题
阮一峰的网络日志
阮一峰的网络日志
博客园 - 司徒正美
罗磊的独立博客
L
LangChain Blog
Stack Overflow Blog
Stack Overflow Blog
B
Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Recent Announcements
Recent Announcements
V
Visual Studio Blog
J
Java Code Geeks
D
Docker
Martin Fowler
Martin Fowler
Blog — PlanetScale
Blog — PlanetScale
腾讯CDC
The Register - Security
The Register - Security
Hugging Face - Blog
Hugging Face - Blog
T
Tailwind CSS Blog
The GitHub Blog
The GitHub Blog
Microsoft Azure Blog
Microsoft Azure Blog
美团技术团队
博客园 - 【当耐特】
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Recent Commits to openclaw:main
Recent Commits to openclaw:main
G
Google Developers Blog
S
Schneier on Security
Apple Machine Learning Research
Apple Machine Learning Research
AWS News Blog
AWS News Blog
N
Netflix TechBlog - Medium
量子位
爱范儿
爱范儿
D
Darknet – Hacking Tools, Hacker News & Cyber Security
MyScale Blog
MyScale Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Spread Privacy
Spread Privacy
V
Vulnerabilities – Threatpost
A
Arctic Wolf
C
Cisco Blogs
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
The Cloudflare Blog
C
CERT Recently Published Vulnerability Notes
L
LINUX DO - 最新话题
W
WeLiveSecurity
Hacker News: Ask HN
Hacker News: Ask HN

博客园 - 大西瓜3721

SVN分支/合并原理及最佳实践 Web.Config中Runtime节点-DLL版本冲突问题 工作问题 Vue资料 轻松实现WCF服务的构造函数依赖注入 WCF 依赖注入-- Attribute MVC视图分析 C#简单枚举和标志枚举的用法和区别 XDate Admin.NET框架资料 日志管理之log4net+Autofac AutoFac注册的动态实例 Named和Keyed NOP源码分析 六 NOP源码分析五---set的存储 NOP源码分析四 Nop源码分析三 NOP源码分析 二 NOP源码分析 一 NopCommerce的资料 IServiceCollection和IServiceProvider 控制反转——Autofac框架 精选10款C#/.NET开发必备类库 11个免费开源后台管理系统模板 H5连接蓝牙打印机打印小票 自定义控件 - 流式布局:TagFlowLayout MVC开源CMS nginx的安装&一个最简单的配置(windows和Centos) DNS解析
关于NopCommerce3.6版用户登录详解
大西瓜3721 · 2026-03-17 · via 博客园 - 大西瓜3721

一、登录方式

Nop登录方式有两种(且只能选择一种方式登录):一种是用用户名登录,另一种是用户注册邮箱登录,这个在后台可配置:

第一种:用户名登录

 

后台配置路径在商城设置à设置管理à客户设置:使用用户名登录

第二种:如果使用用户名复选框未选中的话就是使用邮箱登陆了。

二、加密方式

Nop 的用户密码加密方式有两种:

 

一种是Encrypt(加密),具体配置可在商城设置à设置管理à客户设置,

另一种是Hash(哈希加密),nop默认是使用哈希加密,

另外就是明文,不启用任何加密方式(如用户外部授权登录后的密码就是随机生成的明文密码,未采用任何加密)

三、用户登录

1.Nop在打开网站的时候会自动插入一个匿名用户,保存在Cookie中,保存时间为1年,并赋予guest权限用于浏览前端页面,

 

代码在Nop.Web.Framework的WebWorkContext.cs文件

2.用户登录验证:nop采用的是谷歌服务的验证码,这个不考虑(天朝用不到,不过没事不要开启这个验证,开启的话不但显示不了验证码,还会导致用户无法登录,除非去数据库删除验证码的有关设置),nop采用的是第三方验证工具FluentValidation作为前端的判空等其它验证,简单验证用户名和密码以及采用哪种登录方式后进入服务验证

1:判定用户是否已存在,是否已删除,是否为启用及是否未注册

2:用户密码加密方式,哈希或者Encrypt加密

 

CustomerLoginResults枚举类在:Libraries\Nop.Core\Domain\Customers\CustomerLoginResults.cs

Nop用了一个枚举类CustomerLoginResults作为输出用户登录的结果,这个本人挺喜欢这个方式,符合多种用户登录的可能结果判断,还可以扩展结果类型。

如果用户验证通过,则把当前用户保存在Cookie中

 

保存用户在cookie

 

该文件目录在:Libraries\Nop.Services\Authentication\FormsAuthenticationService.cs

并赋值_cachedCustomer,配合WebWorkContext上下文在整个项目提供一个CurrentCustomer使用。

关于NopCommerce3.6版的@Html.Widget(“home_page_top”)的说明

以首页幻灯片为例子,首页幻灯片是在插件Nop.Plugin.Widgets.NivoSlider里面实现的

  1. 首页视图位置
  2. 这里其实是加载插件里面的视图内容,具体实现在插件实现
  3. 这个是扩展方法,就是执行Nop.Web 下面的WidgetController控制器里面的子动作WidgetsByZone

这个WidgetByZone就是查找当前已使用的@Html.Widget(“xxx”)并返回相应的控制器名字,方法名和路由值

  1. Widget控制器位置
  2. LoadActiveWidgetsByWidgetZone此方法是加载活动的@Html.Widget(“xxx”)的方法,具体实现大家可在相应实现类找到,注意它的返回对象是IWidgetPlugin接口

  3. 这个方法根据参数名就知道是通过@Html.Widget(“xxx”)里面的xxx作为参数找到实现@Html.Widget(“xxx”)这个的插件,具体实现在方法里面有

这里面是那个IWidgetService的实现类,这里的3方法后面跟着的是模糊查询,所以会根据页面有@Html.Widget(“xxx”)的xxx找到具体实现的插件

  1. 实现类的具体位置
  2. 加载已活动的@Html.Widget(“xxx”)实现方法
  3. 这个方法是定定义在插件里头的,它被定义在IWidgetPlugin接口下,所有有需要实现@Html.Widget(“xxx”)的插件都必须实现该接口

1. 幻灯片插件的位置

2. 实现IWidgetPlugin接口

3. 实现IWidgetPlugin接口下面的GetWidgetZones方法并在IWidgetService接口下的实现类被调用实现