单点登录的制作及用户状态获取

2024-03-01 17:09 小编

有时候我们需要网站用户登录后可以给出一些友好提示,比如类似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/改为你自己的会员中心域名。


在线咨询 拨打电话

电话

13363039260

内部绝密传真282期

微信二维码