电话
13363039260
有时候我们需要网站用户登录后可以给出一些友好提示,比如类似pageadmin主站用户登录后提示,您好,某某,以此为例演示一下如何获取到用户登录状态。
V4版本支持多站点,所以通过ajax jsonp的方式去获取数据是最好的方式,这样可以实现多个站点的单点登录,既然需要ajax请求,那么就需要有一个请求文件,请求文件可以用自定义文件新建(ashx或aspx都可以),参考文档后面的自定义页面教程,下面直接演示模板中如何调用登录接口并获取用户登录数据。
1、下面在站点模板目录下新建一个GetCurrentUser.cshtml的模板文件(保存为utf8格式),内容如下:
@{ Layout = null; string userName = ""; string userToken = Request.QueryString["userToken"]; WebApiHelper webApiHelper = new WebApiHelper(); Dictionary<string, string> dictionary = new Dictionary<string, string>(); dictionary.Add("userToken", userToken); dictionary.Add("ip", StringHelper.GetIP()); dictionary.Add("method", "Member.Account.GetCurrentUser"); string result = webApiHelper.Get(dictionary); if (!string.IsNullOrEmpty(result)) { CurrentUser user = JsonHelper.DeserializeObject<CurrentUser>(result); if (user != null) { userName = user.UserName; } } } @if (!string.IsNullOrEmpty(userName)) { <a href="http://u.pageadmin.net/" class="denglu" title="进入会员中心" target="_blank">你好,@userName</a> } else { Response.Clear(); Response.End(); }
原理就是,获取到UserToken参数,通过系统内置的的api去获取用户名,代码中的CurrentUser是一个类,包含UserName,Uid,MemberGroupId,DepartmentId,Email,Mobile这几个重要参数,可根据实际需求获取。
2、然后在自定义路由配置文件中新建一个配置节点
<route urlConstraint="^Common/GetCurrentUser/$" viewPath="Common/GetCurrentUser.cshtml" httpcacheSolutionId="0" columnId="0" title=""></route>
GetCurrentUser.cshtml放在Common目录下,请求url规则为Common/GetCurrentUser/。
3、在模板中可以通过json的方式请求数据。
<div id="loginBox"> <a href="http://u.pageadmin.net/Login/" class="denglu" target="_blank">登录</a><a href="http://u.pageadmin.net/Reg" class="zhuce" target="_blank">注册</a> </div> <script type="text/javascript"> $(function () { $.ajax({ url: "http://u.pageadmin.net/e/GetUserToken", type: "GET", dataType: "jsonp", //指定服务器返回的数据类型 success: function (data) { if (data != "") { $.get("/Common/GetCurrentUser/", "userToken=" + encodeURIComponent(data), function (data) { if (data != "") { $("#loginBox").html(data); } }); } } }); }); </script>
注:上面代码中的http://u.pageadmin.net/改为你自己的会员中心域名。