<!--登录控制器-->
<object type="控制器,WebPage" singleton="false">
<property ref="在配置Service\config时定义的id"/>
<property ref="在配置Service\config时定义的id"/>
</object>
首先,我们添加一个object标签 type 我们的控制器
<object type="WebPage.Areas.SysManage.Controllers.AccountController,WebPage" singleton="false">
</object>
然后,我们这里需要用到两个接口:一个是用户管理,一个是用户在线状态
那么我们添加两个 property标签:
<property ref="Service.User"/>
<property ref="Service.UserOnlineManage"/>
注意:这里property 的属性 name 的值 要跟控制器里声明的容器的名称一致
这样,就实现了。然后,有朋友问,一定要这么复杂的配置么?其实,service\config里配置完,在webpage\config里不配置也是可以的,那么不配置Controllers.xml 如何调用呢?细心的朋友可能已经发现了,我们在BaseCotroller控制器里就没有使用xml配置,在webpages\Models\CommonHelper.cs中也没有使用xml配置:
对于Spring的使用,详细的讲解和专业的术语如何表述,请大家移步度娘。
我们再来看下大家也是有很多问题的UserManage实现类:
//用户登录验证
public Domain.SYS_USER UserLogin(string useraccount, string password) 这个应该没什么可讲的,大家都一目了然。
//是否为超级管理员
public bool IsAdmin(int userId) 这个就一点说明一下 return roles.ToList().Any(item => item.ID == ClsDic.DicRole["超级管理员"]) 这里是用到了字典(是不是比较鸡肋),我们在应用类库Common下的Enums.cs中有这么一个
也是就判断我们当前登录用户的ID是否等于我们定义的超级管理员的ID。
然后,我们再来看下 public Account GetAccountByCookie() 和 public bool Remove(int userId) 这两个是一样的,这两个都调用了外部接口,我们看下我们这个类的开始部分
大家是不是在使用的时候会出现这么一个错误:未将对象引用到实例?
包括在控制中,我们调用接口的时候,出现这个错误,大部分的原因就是:没有注入。
控制器的注入我们上面刚刚讲过了,我们看下接口调用外部接口是如何注入的。service\config\service.xml
大家发现了吧 我们在object标签下 也添加了property标签。上面我们讲过了控制器如何不使用xml实现注入,这里大家是否也可以尝试一下。
好了,已发布的项目和数据库:百度网盘
网盘已失效,再发第二次,希望大家抓紧:百度网盘
带密码啊?是的,娱乐一下,单数楼层留下邮箱,密码发给你。o(*≧▽≦)ツ 大家抓紧,网盘会失效的。
说明:大家可以直接放到IIS里架起来,数据库在App_Data\DataBase 里面。
数据库连接需要修改两个地方:① web.config 里面的数据库连接 ② log4net.config 里面的数据库连接 (我们的日志不是存在txt里是存到数据库里的)
还有,这个是单点登录,如果不需要,请修改config\website.config 找到 <add key="IsSingleLogin" value="True"/> 改为False
不好意思,忘了说登录账号和密码了,admins Yuan19880212
原创文章 转载请尊重劳动成果