Tag: asp.net mvc

如何在其他用户更改其用户名时强制注销用户?

在我的应用程序中,我使用Forms-Authentication登录并注销用户。 一个function是管理员可以更改其他用户的用户名。 在这种情况下,我需要注销用户名已更改的用户。 如果我不这样做,由于之前设置了cookie,他们可以访问应用程序并收到错误消息(因为他们的用户名不存在,并且有些部分我使用他们的用户名来实现某些function)。 如何强制这些用户使用Forms-Authentication注销? 更新: public override void OnActionExecuting(ActionExecutingContext filterContext) { string controller = filterContext.RouteData.Values[“controller”].ToString(); string action = filterContext.RouteData.Values[“action”].ToString(); ; // Below returns the previous username, which does not exist anymore in db. string userName = HttpContext.Current.User.Identity.Name; UnitOfWork unitOfWork = new UnitOfWork(); if (!unitOfWork.UserRepository.UserExists(userName)) { FormsAuthentication.SignOut(); filterContext.HttpContext.Session.Clear(); filterContext.HttpContext.Session.Abandon(); // I am not using Roles. […]

将List转换为IEnumerable

这里有棘手的问题。 我正在尝试将列表的项目转换为IEnumerable 。 清单 dynamicTextInDatabase只返回我的数据库中使用的所有枚举。 目前只返回1和2.数据类simple包含一个int值。 dynamicTextEnumsInDatabase与实际存储我的枚举的类中的列表相同。 dynamicTextEnumsAll是我的应用程序中可用的所有枚举的列表。 目前:1,2和3。 dynamicTextEnumsAvaiable是所有未使用的枚举的列表。 它组合了所有枚举,然后删除数据库列表中的那些。 我需要通过dynamicTextEnumsAvaiable将dynamicTextEnumsAvaiable传递给我的View,以显示在下拉列表中。 但是,它必须是IEnumerable而不是List 。 码 List dynamicTextInDatabase = new List(); List dynamicTextEnumsInDatabase = new List(); List dynamicTextEnumsAll = new List(); IEnumerable list; using (var proxy = new Proxy()) { dynamicTextInDatabase = proxy.Channel.DynamicTextGetActiveEnums(Helper.GetCallingUser()); } foreach (DynamicTextEnumData item in dynamicTextInDatabase) { DynamicTextEnum dynamicTextEnum = (DynamicTextEnum)item.DynamicTextEnum; dynamicTextEnumsInDatabase.Add(dynamicTextEnum); } […]

使用Shibboleth进行asp.net MVC身份validation

Shibboleth是一种SSO身份validation,它作为“插件”添加到IIS中。 在用户完成登录后,会出现显示Shibboleth会话的标题:ShibSessionID ShibIdentityProvider eppn从属关系权利unscopedaffiliation …更多 所以我可以从标题中提取用户名和角色。 到目前为止一切都很好 问题:如何实现读取标头并设置用户授权状态的处理程序? 想法是使用[Authorize]属性和Method Roles.IsUserInRole。 全部来自Headers,没有数据库,没有用户管理。 更新 实施根据@Pharylon的回答 在这个更新中没有什么新东西,只是副本和过去的朋友的帮助。 当然,您必须根据Shibboleth设置调整属性和标题字段名称。 文件:ShibbolethPrincipal.cs using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Security.Principal; //GenericPrincipal namespace Shibboleth { public class ShibbolethPrincipal : GenericPrincipal { public string username { get { return this.Identity.Name.Replace(“@ksz.ch”, “”); } } public string firstname { get { return HttpContext.Current.Request.Headers[“givenName”]; […]

lambda表达式使用select和where子句连接多个表

我有三个表多对多关系我已加入三个表并选择我想要的值但现在我需要从查询结果中选择一行通过指定id这是我的三个表 这是使用LINQ lambda表达式的查询: DataBaseContext db = new DataBaseContext(); public ActionResult Index() { var UserInRole = db.UserProfiles. Join(db.UsersInRoles, u => u.UserId, uir => uir.UserId, (u, uir) => new { u, uir }). Join(db.Roles, r => r.uir.RoleId, ro => ro.RoleId, (r, ro) => new { r, ro }) .Select(m => new AddUserToRole { UserName = mruUserName, RoleName […]

使用Json.Net在MVC中返回未转义的Json

我在使用Json.Net在MVC项目中找出如何返回未转义的Json时遇到了令人惊讶的麻烦。 它完全暗指我,但我确定我错过了一些简单的东西…… 到目前为止,我序列化了一个基本对象,并让Json.Net对其进行序列化: public JsonResult GetTimelineJson() { var result = new MyGraph([some data…]); return Json(JsonConvert.SerializeObject(result), JsonRequestBehavior.AllowGet); } 结果: “{\r\n \”id\”: \”myGraph\”,\r\n \”title\”: \”Graph title\”,\r\n […] 任何将它包装成HtmlString等的尝试都会导致在线上传递一个空集(尽管调试点显示它正确地未转义)。 我已经检查过HTTP标头中是否正确设置了内容类型。 任何和所有的帮助表示赞赏,谢谢。

从任意URL手动实例化Controller实例?

我的技能让我失望,我知道我已经看到了这个代码,但我找不到它。 获取任意URL的最快方法是什么,通过asp.net mvc路由系统运行它,并在另一端引用控制器实例? 例如,代码执行在一些任意控制器方法中。 我想做这样的事情: … string myURL = “http://mysite/mycontroller/myaction/myparameters”; RouteData fakeRouteData = new RouteData(Route???, IRouteHandler???) RequestContext ctxt = new RequestContext(this.ControllerContext.HttpContext, fakeRouteData); ControllerFactory factory = ControllerBuilder.Current.GetControllerFactory(); Controller result = factory.CreateController(ctxt, controllername???) 我正在尝试获取控制器的实例,就像路由系统一样,无论代码在哪里执行。 我不清楚在这一点上如何将各个部分组合在一起。 虽然我最终会发现它,但我想我可以通过询问来节省时间;)

如何正确映射WebAPI路由

我正在使用Web API为类似Twitter的网站构建API,并且无法映射路由 我对User控制器有以下操作: public User Get(string firstname, string lastname) public User Get(Guid id) public User Friends(Guid id) public User Followers(Guid id) public User Favorites(Guid id) 所需的路由和生成的文档应该是: api/users?firstname={firstname}&lastname={lastname} api/users/{id} api/users/{id}/friends api/users/{id}/followers api/users/{id}/favorites 在WebApiConfig.cs中我有: config.Routes.MapHttpRoute( “2”, “api/{controller}/{id}”, new { action = “get”, id = RouteParameter.Optional } ); config.Routes.MapHttpRoute( “1”, “api/{controller}/{id}/{action}” ); 如何正确映射WebAPI路由?

MVC4的样式捆绑不使用min文件

我有4个文件: a.css a.min.css b.css b.min.css 它们以下列方式添加到bundle中: bundles.Add(new StyleBundle(“~/Content/acss”).Include(“~/Content/a.css”, “~/Content/b.css”)); 在调试中运行应用程序时,所有都正确呈现: 但是当在发行版中运行时,我会以下列方式呈现它: 我在里面创立: / *缩小失败。 返回未经授权的内容。 (24,708):运行时错误CSS1030:预期的标识符,找到’。’ 所以我有两个问题: 为什么它不按照在线文档工作? 所有信息都说如果可用于发布版本,它会选择min文件? 如何根据文档使其工作?

扩展ASP.NET身份

从许多方面来看,这似乎已被多次询问,但这些似乎都不适合我的确切情况。 这是我的_LoginPartial.cshtml文件中的一行: @Html.ActionLink(“Hello ” + User.Identity.GetUserName() + “!”, “Manage”, “Account”, routeValues: null, htmlAttributes: new { title = “Manage” }) 请参阅说明User.Identity.GetUserName()的部分? 我想将其更改为User.Identity.FirstName或User.Identity.GetFirstName()。 我不希望它说“你好电子邮件地址”,而是“Hello Bob” 我的想法是,我只是想在Identity类上显示一个新的属性(或方法)。 显然它必须不止于此。 我添加了FirstName属性, 它在AccountController中可用 。 public class ApplicationUser : IdentityUser { public string FirstName { get; set; } public string LastName { get; set; } 它不会在_LoginPartial文件中公开。 我希望它暴露在那里! 谢谢您的帮助

带有ASP.NET MVC / MVVM的Websockets

今天早些时候,我遇到了Kaazing的 HTML5 WebSocket API。 看起来很棒,但由于我现在只研究WebSocket实时财务更新的可能性,我想听一些建议,以及在规划这个架构时要避免的陷阱。 我正在看ASP.Net MVC,可能还有一些WPF / Silverlight MVVM。 是否有其他更好的WebSocket API(以及为什么),以及一些很好的例子? 此外,WebSockets可以处理什么样的流量? 我的意思是,如果我们在系统上有超过一百万用户实时更新,那么硬件需求如何变化,因为软件架构实现了WebSockets?