zoukankan      html  css  js  c++  java
  • 如何手动让HttpRequestBase.IsAuthenticated 和 HttpContext.User.Identity.IsAuthenticated 为true.

    今天为了重写权限验证这块需要重写AuthorizeAttribute 这个属性,看了官方文档:HttpContextBase.User.Identity.IsAuthenticated 这个必须是true才能跑的通,我又去查如何让这个为true,后来进入了误区,准备重写IIdentity 和IPrincipal接口,但是很蛋疼的是需要重写: Application_PostAuthenticateRequest(在Global.asax),并且这种方式只是替换,还是需要验证HttpContextBase.User.Identity.IsAuthenticated是否为True, 而我概念里面其实很简单,肯定有一个接口或者一个管道设置一下就好,并不用去做什么配置,没那么麻烦,后来我又去研究了WebSecurity.Login 这个方法,这个其实蛮好玩的,不过需要重新设置这个: WebSecurity. InitializeDatabaseConnection(string connectionStringName, string userTableName, string userIdColumn, string userNameColumn, bool autoCreateTables);

    connectionStringName在wei.config里面能找到,就是那个defaultConnection.后面的自己配置。

    ok, 这个其实是一种解决方案,把你的数据库连接进来,然后就可以玩了,我个人也比较推荐这个,因为可以玩它自带很多功能。

    但是对于需要自己去包装业务的来说,想让HttpRequestBase.IsAuthenticated 和 HttpContext.User.Identity.IsAuthenticated 为true,还有一个办法:

     System.Web.Security.FormsAuthentication.RedirectFromLoginPage(model.UserName, true); 这样就好了,在判断用户登录是否成功以后调用这个,

    效果和上面的是一样,所以无论你是Form提交还是Ajax提交,这个都好使。

    我也刚刚开始研究ASP.NET MVC,然后很喜欢里面的绕来绕去,我相信,弄懂这里的东西,还是很好玩的。如果大家有什么更好的办法,请告诉我,谢谢。

  • 相关阅读:
    TIF转JPG
    跨线程取出控件的值的写法(不是跨线程赋予控件值)
    oracle根据正则表达式查找对应的字段
    oracle数据库连接字符串
    access检测表没有的字段,添加之
    解决 Unable to load DLL 'OraOps9.dll': 找不到指定的模块。 (Exception from HRESULT: 0x8007007E)
    oracle关键字使用
    to_number,Extract oracle的关键字
    OracleCommand.CommandText 无效
    调用带参数的线程两种方法
  • 原文地址:https://www.cnblogs.com/guochenkai/p/4384619.html
Copyright © 2011-2022 走看看