zoukankan      html  css  js  c++  java
  • customizing the authentication cookie

    Customizing the Authentication Cookie

    You can use the authentication cookie to store encrypted and validated custom data such as a description of the users’ role in your ASP.NET applications

    The authentication cookie, also known as the authentication ticket, is issued when an application redirects its users to a login page. The user enters her credentials and is given a ticket. The display of the login page is governed by an HTTP module, which in the case of successful authentication, redirects the user to the originally requested page. The authentication ticket has a relatively short lifetime (a customizable default duration of 30 minutes) and doesn’t contain any extra or application-specific data. The ticket is a highly secured piece of information because it can be encrypted, validated against tampering with, and even transmitted over a secure HTTPS channel. (This last feature is only supported on ASP.NET 1.1 and newer.) For this reason, it sometimes makes sense to want to store some custom data in it—for example, the role of the user in the application. How can that be accomplished? Easy, just access the cookie and change its properties.

    The ASP.NET Forms authentication is designed to make the use of the authentication cookie completely transparent to programmers. The idea is that you declaratively point users to a login page, within which the ID and password can be collected and the identity verified. If the user is known, then you’re expected to call a static method on the FormsAuthentication class—RedirectFromLoginPage—to redirect to the originally requested page. In doing so, that is before the actual redirection takes place, the authentication is issued. If you want to put your hands on the ticket, you must replace the RedirectLoginPage call with a local function. Wrap the following code in a new routine and call it instead of RedirectLoginPage:

    // Get the redirect URL
    string redirectURL;
    redirectURL = FormsAuthentication.GetRedirectUrl(userName, false);
    
    // Create the cookie
    FormsAuthentication.SetAuthCookie(userName, false);
    
    // Retrieve the cookie
    string cookieName = FormsAuthentication.FormsCookieName;
    HttpCookie c = Response.Cookies[cookieName];
    
    // Modify the cookie
    :
    
    // Redirect
    Response.Redirect(redirectURL);
    

    The code above performs four basic operations: obtain the redirect URL, create the authentication cookie, retrieve and modify the cookie from the Response object, and finally redirect to the original URL. The basic tasks are accomplished through ad hoc methods on the FormsAuthentication class. In particular, the SetAuthCookie method creates and attaches the cookie to the cookie's collection of the outgoing response. The method is void and does not perform a redirect. To retrieve and programmatically access the cookie, you simply extract it by name from the Cookies collection of the HttpResponse class.

    Once you hold a cookie object, you can modify its duration, as shown below:

    c.Expires = DateTime.Now.AddMinutes(minutes);
    
    Likewise, you can add custom data to the cookie.
    
    c.Values["Role"] = "guest";
    

    Using cookies requires some support from the client browser. In ASP.NET 1.x, cookies are mandatory, and there’s no way to avoid their use as long as you intend to take advantage of the built-in authentication framework.

    In ASP.NET 2.0, the core API also supports cookieless semantics. More precisely, the whole API has been reworked to make it expose a nearly identical programming interface but support dual semantics—cookied and cookieless.

  • 相关阅读:
    IDEA与tomcat的相关配置
    传统项目IDEA集成tomcat配置并创建web项目
    Maven项目更改工程运行环境插件
    Maven项目使用骨架或不使用骨架创建工程
    Maven项目中jar包冲突问题解决 导入jar包scope作用域的使用
    分开使用 Celery beat and worker
    (转) -- 线程、进程、协程
    Django REST Framework -- REST API 报错:403
    postman -- 循环调用RESTAPI
    (转载) -- ab(Apache benchmark) 一款常压力测试工具
  • 原文地址:https://www.cnblogs.com/umlchina/p/18029.html
Copyright © 2011-2022 走看看