yl
2022-06-10 6045668287bf4062f6455565d7cc7cbcba186225
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web;
using System.Web.Http;
using VueWebApi.DLL.BLL;
using VueWebApi.Models;
using VueWebApi.Tools;
 
namespace VueWebApi.Controllers
{
    [RoutePrefix(prefix: "api/Login")]
    [ControllerGroup("系统设置", "在线接口")]
    public class LoginController : ApiController
    {
        //定义全局信息返回变量
        ToMessage mes = new ToMessage();
        RedisHelper redis = new RedisHelper();
 
        /// <summary>
        /// 用户登录
        /// </summary>
        /// <param name="username">用户名</param>
        /// <param name="password">密码</param>
        /// <returns></returns>
        [Route(template: "LoginSave")]
        [HttpGet]
        public HttpResponseMessage LoginSave(string username, string password)
        {
            DataTable dt = LoginBLL.LoginSearch(username,password);
            if (dt.Rows.Count > 0)
            {
                List<User> mss = new List<User>();
                User ms = new User();
                //ms.guid=Guid.NewGuid().ToString();
                ms.userid = Convert.ToInt32(dt.Rows[0]["ID"].ToString());
                ms.username = dt.Rows[0]["USERNAME"].ToString();
                ms.password = dt.Rows[0]["PASSWORD"].ToString();
                ms.usertype = "PC";
                mss.Add(ms);
                HttpContext.Current.Session["User"] = JsonConvert.SerializeObject(ms);
                User loginUser = JsonConvert.DeserializeObject<User>(HttpContext.Current.Session["User"].ToString());
                //如果redis登录用户中不存在当前用户
                if (redis.Get<User>("LoginUserID" + ms.userid, 0) == null) 
                {
                    //redis.Remove("LoginUserID" + ms.userid, 0);
                    //写入redis(注意:redis类里面的失效时间必须在key创建完成之后才生效)
                    redis.Set<User>("LoginUserID" + ms.userid, ms, redis.secondsTimeOut, 0);
                    mes.code = "200";
                    mes.Message = "登录成功!";
                    mes.data = ms;
                }
                else //如果存在
                {
                    //获取redis中当前用户信息
                    User r_loginUser = redis.Get<User>("LoginUserID" + ms.userid, 0);
                    //如果session中的用户guid和redis中的用户guid匹配
                    if (r_loginUser.guid.Equals(loginUser.guid))
                    {
                        //重置过期时间(注意:redis类里面的失效时间必须在key创建完成之后才生效)
                        redis.Set<User>("LoginUserID" + loginUser.userid, loginUser, redis.secondsTimeOut, 0);
                        mes.code = "200";
                        mes.Message = "登录成功!";
                        mes.data = ms;
                    }
                    else
                    {
                        mes.code = "300";
                        mes.Message = "当前账号已登录!";
                    }
                }
                // 链表存储
                //RedisHelpers.AddEntityToList<List<User>>("003", mss);
                //RedisHelpers.AddEntityToList<User>("004", ms);
 
                //Console.WriteLine(RedisHelpers.Get<User>("001", 1));
                //Console.WriteLine(RedisHelpers.Get<List<User>>("002", 3));
             
            }
            else 
            {
                mes.code = "300";
                mes.Message = "账号或密码不正确!"; 
            }
            return mes.ResponseMess(mes);
        }
 
 
        #region[查询登录菜单]
        /// <summary>
        /// 查询功能菜单
        /// </summary>
        /// <returns></returns>
        [Route(template: "LoginMenu")]
        [HttpGet]
        public HttpResponseMessage LoginMenu()
        {
            string usercode = HttpContext.Current.Request.Cookies["usercode"].ToString();
            mes = LoginBLL.LoginMenu(usercode);
            return TJson.toJson(mes);
        }
        #endregion
 
 
        /// <summary>
        /// 修改密码
        /// </summary>
        /// <param name="username">用户名</param>
        /// <param name="password">密码</param>
        /// <param name="newpassword">新密码</param>
        /// <returns></returns>
        [Route(template: "UpdateUserPassword")]
        [HttpPost]
        public HttpResponseMessage UpdateUserPassword(string username, string password,string newpassword)
        {
            mes = LoginBLL.UpdateUserPassword(username, password,newpassword);
            return mes.ResponseMess(mes);
        }
    }
}