问题1. 控制器上加了[Authorize] 在登录代码应该怎么写,他才不会又跳回到登录器
问题2.控制器上加了[Authorize(Roles="admin")] 要怎么写给他赋予权限
问题3.控制器上加了[Authorize(Users ="lfh")] 要怎么写给他赋予权限
会其中一个也可以 回答,麻烦指点下
用identity
应该怎么写呀
@Aaron_Net: ?如果你自己写.就是给User赋值
using System; using System.Collections.Generic; using System.Linq; using System.Net.Http; using System.Security.Claims; using System.Security.Principal; using System.Threading; using System.Threading.Tasks; using System.Web; namespace Api.ApiExtend.Handlers { /// <summary> ///token授权提供器 /// 解析请求头中basic授权信息 /// </summary> public class YwartTokenAuthProvider : DelegatingHandler { /// <summary> /// 以异步操作发送 HTTP 请求到内部管理器以发送到服务器。 /// <param name="request">要发送到服务器的 HTTP 请求消息。</param> /// <param name="cancellationToken">取消操作的取消标记。</param> /// <returns> 返回 System.Threading.Tasks.Task`1。 表示异步操作的任务对象。</returns> /// </summary> protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { Authorized(request); return base.SendAsync(request, cancellationToken); } private void Authorized(HttpRequestMessage request) { if (request == null || request.Headers == null || request.Headers.Authorization == null || request.Headers.Authorization.Scheme != "Token") { return; } Guid token; if (!Guid.TryParse(request.Headers.Authorization.Parameter, out token)) { return; } var tokenModel = DbFactory.AccessToken .Single(m => m.Token == token.ToString() && m.IsDel == false && m.Timeout > DateTime.Now); if (tokenModel == null) { return; } var user = DbFactory.User.Single(m => m.Id == tokenModel.UserId); if (user == null) { return; } var userEntity = new UserEntity { }; var identity = new GenericIdentity(userEntity.Id.ToString(), "Token"); identity.AddClaim(new Claim(ClaimTypes.UserData, userEntity.ToJson())); identity.AddClaim(new Claim("UserInfo.Id", user.Id.ToString())); //将用户实体序列化放到声明中 IPrincipal principal = new GenericPrincipal(identity, new string[] { }); Thread.CurrentPrincipal = principal; if (HttpContext.Current != null) { HttpContext.Current.User = principal; } } } }
这是我们公司用的授权提供处理
@吴瑞祥: 要怎么用呀!!
@吴瑞祥: 控制 器 中给个授权例子呀模拟一下
@吴瑞祥: 大兄弟,加个我3350823838 或威信 ASD124FGH,,指导下,,
@Aaron_Net: 控制器里就[Authorize] 就可以了.
@吴瑞祥: 虽然没懂,谢谢了