关于NopCommerce3.6版用户登录详解
一、登录方式
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里面实现的
- 首页视图位置
- 这里其实是加载插件里面的视图内容,具体实现在插件实现
- 这个是扩展方法,就是执行Nop.Web 下面的WidgetController控制器里面的子动作WidgetsByZone

这个WidgetByZone就是查找当前已使用的@Html.Widget(“xxx”)并返回相应的控制器名字,方法名和路由值
- Widget控制器位置
-
LoadActiveWidgetsByWidgetZone此方法是加载活动的@Html.Widget(“xxx”)的方法,具体实现大家可在相应实现类找到,注意它的返回对象是IWidgetPlugin接口
- 这个方法根据参数名就知道是通过@Html.Widget(“xxx”)里面的xxx作为参数找到实现@Html.Widget(“xxx”)这个的插件,具体实现在方法里面有

这里面是那个IWidgetService的实现类,这里的3方法后面跟着的是模糊查询,所以会根据页面有@Html.Widget(“xxx”)的xxx找到具体实现的插件
- 实现类的具体位置
- 加载已活动的@Html.Widget(“xxx”)实现方法
- 这个方法是定定义在插件里头的,它被定义在IWidgetPlugin接口下,所有有需要实现@Html.Widget(“xxx”)的插件都必须实现该接口

1. 幻灯片插件的位置
2. 实现IWidgetPlugin接口
3. 实现IWidgetPlugin接口下面的GetWidgetZones方法并在IWidgetService接口下的实现类被调用实现
浙公网安备 33010602011771号