123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- using HaBookCms.AzureStorage.AzureTable.Interfaces;
- using HaBookCms.Common.Constants;
- using HaBookCms.Common.CryptHelper;
- using HaBookCms.Common.HttpHelper;
- using HaBookCms.Common.JsonHelper;
- using HaBookCms.Common.ValidateHelper;
- using HaBookCms.Core.Dtos;
- using HaBookCms.Core.Models.Common;
- using HaBookCms.Core.Models.System;
- using HaBookCms.Jwt.Model;
- using Microsoft.AspNetCore.Authentication.JwtBearer;
- using Microsoft.AspNetCore.Authorization;
- using Microsoft.AspNetCore.Cors;
- using Microsoft.AspNetCore.Mvc;
- using System;
- using System.Collections.Generic;
- using System.Security.Claims;
- using System.Text;
- using System.Threading.Tasks;
- namespace HaBookCms.Contest.Controllers
- {
- /// <summary>
- /// 控制器所有接口
- /// </summary>
- [Authorize( Roles = "ContestWeb")]
- // [Produces("application/json")]
- [Route("api/cmsUsers")]
- [ApiController]
- public class CmsUsersController : BaseController
- {
- public IAzureTableDBRepository _repository;
- public CmsUsersController(IAzureTableDBRepository repository)
- {
- _repository = repository;
- }
- /// <summary>
- ///
- /// </summary>
- /// <param name="ticketInfo"></param>
- /// <returns></returns>
- [HttpPost]
- [Route("checkLogin")]
- [EnableCors("any")]
- [AllowAnonymous]
- public async Task<object> checkLogin(TicketInfo ticketInfo)
- {
- //TicketInfo ticketInfo = new TicketInfo();
- string jwtStr = string.Empty;
- var tmdInfo = CheckTicketInfo(ticketInfo);
- if (tmdInfo != null)
- {
- //如果是基于用户的授权策略,这里要添加用户;如果是基于角色的授权策略,这里要添加角色
- var claims = new List<Claim> {
- new Claim(ClaimTypes.Name, ticketInfo.teamModelId),
- new Claim(ClaimTypes.MobilePhone,tmdInfo.countryCode+tmdInfo.cellphone)
- // new Claim(ClaimTypes.Expiration, DateTime.Now.AddSeconds(_requirement.Expiration.TotalSeconds).ToString())
- };
- // claims.AddRange(user.Split(',').Select(s => new Claim(ClaimTypes.Role, s)));
- //用户标识
- var identity = new ClaimsIdentity(JwtBearerDefaults.AuthenticationScheme);
- identity.AddClaims(claims);
- JwtToken token = JwtToken.BuildJwtToken(claims.ToArray()
- //, _requirement
- );
- string guid=GuidHelper.GetGuidInfo();
- long time = (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000;
- LoginInfo loginInfo = new LoginInfo {
- RowKey= guid,
- PartitionKey=guid,
- guid = guid,
- teamModelId = ticketInfo.teamModelId,
- loginTime = time,
- jwtToken = token.token,
- timeout = time + token.expires_in,
- ticket =ticketInfo.ticket
- };
- LoginInfo login= await _repository.Save<LoginInfo>(loginInfo);
- return new JsonResult(token);
- }
- else
- {
- return new JsonResult(new
- {
- Status = false,
- Message = "认证失败"
- });
- }
- }
- private TeamModelIdInfo CheckTicketInfo(TicketInfo ticketInfo)
- {
- if (ValidateHelper.IsValid(ticketInfo))
- {
- //string md5info = Md5Crypt.GetMd5String(ticketInfo.ticket);
- string md5info = ticketInfo.ticket;
- if (md5info.Equals(ticketInfo.sign))
- {
- Dictionary<string, string> dict = new Dictionary<string, string>();
- string userInfoKey = BaseConfigModel.Configuration["HaBookAuth:UserInfoKey"];
- dict.Add(Constant.AUTHORIZATION, userInfoKey);
- JosnRPCRequest<Dictionary<string, object>> request = new JosnRPCRequest<Dictionary<string, object>>();
- request.method = "UserInfo";
- Dictionary<string, object> ticket = new Dictionary<string, object>();
- ticket.Add("ticket",ticketInfo.ticket);
- request.@params = ticket;
- string data = MessagePackHelper.ObjectToJson(request);
- string jsonStr = HttpHelper.HttpPost(BaseConfigModel.Configuration["HaBookAuth:AccountUrl"], data, dict,Constant.CONTENT_TYPE_JSON, 1000, Encoding.UTF8);
- if (!string.IsNullOrEmpty(jsonStr))
- {
- JosnRPCResponse<TeamModelIdInfo> response = MessagePackHelper.JsonToObject<JosnRPCResponse<TeamModelIdInfo>>(jsonStr);
- if (response.error == null && response.result!=null) {
- TeamModelIdInfo teamModelIdInfo = response.result;
- return teamModelIdInfo;
- }
- }
- }
- }
- return null ;
- }
- [HttpGet]
- [Route("test")]
- [EnableCors("any")]
- [AllowAnonymous]
- public async Task<object> Test()
- {
- LoginInfo loginInfo = new LoginInfo();
- loginInfo.RowKey = Guid.NewGuid().ToString();
- loginInfo.PartitionKey = Guid.NewGuid().ToString();
- loginInfo.guid= Guid.NewGuid().ToString();
- await _repository.Save<LoginInfo>(loginInfo);
- SysUser sysUser = new SysUser();
- sysUser.RowKey = Guid.NewGuid().ToString();
- sysUser.PartitionKey = Guid.NewGuid().ToString();
- sysUser.Guid = Guid.NewGuid().ToString();
- await _repository.Save<SysUser>(sysUser);
- return loginInfo;
- }
- }
-
- }
|